如何检查对象是否包含使用 Jasmine 的项目
How to check if object contains an item using Jasmine
我使用 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();
};
问题是,当我运行代码时,是这样的returns:
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'.
如您所见,我的回复对象确实包含 x
但行 expect(ctrl.reply).toContain('x');
仍然失败。知道如何正确验证我的对象是否包含 x
?
您创建的内容与预期内容存在错误。注意这一行:
self.reply['x'] = self.posts[0].id;
它期望 ctrl
有一个 属性 "posts" 是一个数组,它有一个索引 0
,它有一个名为 [=15] 的 属性 =]. 这些条件中的每一个都不满足
您在 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');
});
我使用 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();
};
问题是,当我运行代码时,是这样的returns:
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'.
如您所见,我的回复对象确实包含 x
但行 expect(ctrl.reply).toContain('x');
仍然失败。知道如何正确验证我的对象是否包含 x
?
您创建的内容与预期内容存在错误。注意这一行:
self.reply['x'] = self.posts[0].id;
它期望 ctrl
有一个 属性 "posts" 是一个数组,它有一个索引 0
,它有一个名为 [=15] 的 属性 =]. 这些条件中的每一个都不满足
您在 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');
});