Angularjs 检查函数是否成功执行jasmine
我正在尝试使用jasmine编写单元测试用例。我有一个场景,我将数据传递给具有不同属性的函数,我只想检查该函数是否成功执行或没有任何错误。我尝试了Angularjs 检查函数是否成功执行jasmine,angularjs,jasmine,Angularjs,Jasmine,我正在尝试使用jasmine编写单元测试用例。我有一个场景,我将数据传递给具有不同属性的函数,我只想检查该函数是否成功执行或没有任何错误。我尝试了expect(foo).tohavebeencall(),但它需要的是间谍而不是函数。请建议在此场景中编写测试用例预期的任何方法。toHaveBeenCalled()只能与spy一起使用 在您的方法上创建一个spy,然后尝试此操作 spyOn(obj, 'foo'); obj.foo(); // call foo() expect(obj.foo).
expect(foo).tohavebeencall()
,但它需要的是间谍而不是函数。请建议在此场景中编写测试用例预期的任何方法。toHaveBeenCalled()
只能与spy
一起使用
在您的方法上创建一个spy
,然后尝试此操作
spyOn(obj, 'foo');
obj.foo(); // call foo()
expect(obj.foo).toHaveBeenCalled()
你到底想测试什么
foo
是否正常工作。在这种情况下,只需从测试中调用foo()
。如果抛出,测试将失败bar
是否正常工作,其中“正确”表示它应该调用foo
。在这种情况下,为foo
创建一个spy,并在spy上使用toHaveBeenCalled()
。这可能需要重新构造代码,以便以某种方式将foo
spy注入bar
从你的描述来看,似乎你想同时进行这两项测试,这与单元测试的原则背道而驰:你一次测试一件事。什么是
obj
wrt原始问题?而且,这个测试没有什么意义obj.foo
显然已经被调用到断言上面的那行:)原谅我。与angularjs相比,这是非常有w.r.t角度的。我觉得是一样的。