gpt4 book ai didi

javascript - 如何使用 Jasmine 检查对象是否包含项目

转载 作者:行者123 更新时间:2023-12-03 07:46:57 28 4
gpt4 key购买 nike

我使用 karma 和 jasmine 作为我的测试框架。这是我的代码:

it('add() should add x to the reply object', function() {
spyOn(ctrl, 'addxReply');
ctrl.reply = {};
ctrl.reply.post = 'test post';
ctrl.add();
expect(ctrl.addxReply).toHaveBeenCalled();
console.log(ctrl.reply);
expect(ctrl.reply).toContain('x');
});

这是我的 ctrl.add():

self.add = function() {
self.reply['x'] = self.posts[0].id;
self.addxReply();
};

问题是,当我运行代码时,它返回的是:

LOG: Object{post: 'test post', x: undefined}
Chromium 48.0.2564 (Ubuntu 0.0.0) Controller: MainCtrl add() should add x to the reply object FAILED
Expected Object({ post: 'test post', x: undefined }) to contain 'x'.

如您所见,我的回复对象确实包含 xexpect(ctrl.reply).toContain('x'); 行仍然失败。知道如何正确验证我的对象是否包含 x 吗?

最佳答案

您创建的内容与预期内容存在错误。注意这一行:

self.reply['x'] = self.posts[0].id;

它期望 ctrl 有一个属性“posts”,该属性是一个索引为 0 的数组,该索引有一个名为 id 的属性。 所有这些条件均不成立

您在 ctrl 的属性下定义了一个单一属性(不是数组)reply:

ctrl.reply.post

您需要更改测试代码:

it('add() should add x to the reply object', function() {
spyOn(ctrl, 'addxReply');
ctrl.reply = {};

//ctrl needs an array named "posts" with one index
//containing an object with an "id" property
ctrl.posts = [ { "id": 'test post' } ];

ctrl.add();
expect(ctrl.addxReply).toHaveBeenCalled();
console.log(ctrl.reply);
expect(ctrl.reply).toContain('x');
});

关于javascript - 如何使用 Jasmine 检查对象是否包含项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35166099/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com