我创建了一个完整的简化示例来复制我遇到的问题。
function TestObj() {
var self = this;
self.getStuff = function(aString, callback) {
// TODO
}
}
describe("server communications", function() {
it("it calls the server", function() {
var obj = new TestObj();
obj.getStuff = jasmine.createSpy();
// swap the above line for this and it makes no difference
// spyOn(obj, "getStuff");
var functionVar = function() {
};
obj.getStuff("hello", functionVar);
expect(obj.getStuff).toHaveBeenCalledWith(
[ "hello", jasmine.any(Function) ]);
});
});
我没有通过单元测试,而是得到以下输出:
预期 spy 被调用为: [ [ 'hello',<jasmine.any(function Function() { [native code] })> ] ] 但被调用为: [ [ 'hello', Function ] ]
为什么不承认我传入的函数 (function (){}) 实际上是函数?它所期望的本机代码是什么?jasmine.any(Function) 还有其他人有这个问题吗?谢谢!
已编辑
我尝试使用 spyOn 而不是 jasmine.createSpy() 并没有什么区别。我只尝试了一个参数并且它有效。引入第一个字符串参数会破坏 jasmine.any(Function) - 有什么想法吗?