Don*_*n H 3 javascript testing jasmine
我正在使用Jasmine进行一些测试,在寻找间谍的预期参数时会产生奇怪的结果.
我正在测试使用toHaveBeenCalledWith()方法并寻找类似这样的东西:
{
foo: bar,
thing: [1,2,3],
etc: function() { blah; }
}
Run Code Online (Sandbox Code Playgroud)
它给出了一个失败,但错误消息似乎确认实际上找到了完全相同的对象.
可能出现这种情况的原因是什么?
等效函数定义不相等.所以,
function() { return 'blah'; } == function() { return 'blah'; } // returns false
Run Code Online (Sandbox Code Playgroud)
使用toHaveBeenCalledWith()时,您必须引用相同的函数定义,以使Jasmine认为它等于传递给spied对象方法的参数.您是否可以将新的对象定义(如您在问题中包含的对象)传递给toHaveBeenCalledWith()?这不会通过Jasmine断言.
这是我跑的Jasmine规范,说明了我所说的内容.有一个成功的例子和一个失败的例子:
describe("A spy example", function() {
var baz = {
foo: 'bar',
thing: [1,2,3],
etc: function() { }
};
beforeEach(function() {
spyOn(baz, 'etc');
baz.etc(baz);
});
it("succeeds", function() {
expect(baz.etc).toHaveBeenCalledWith(baz);
});
it("fails", function() {
expect(baz.etc).toHaveBeenCalledWith({
foo: 'bar',
thing: [1,2,3],
etc: function() { }
});
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5084 次 |
| 最近记录: |