检查函数是否成功执行茉莉花

时间:2018-07-24 11:43:05

标签: angularjs jasmine

我正在尝试使用茉莉花编写单元测试用例。我有一种情况,我正在将数据传递给具有不同属性的函数,我只想检查该函数是否成功执行或没有任何错误。我尝试了expect(foo).toHaveBeenCalled(),但是它期望一个间谍而不是一个函数。在这种情况下,请提出任何写测试用例期望的方法。

2 个答案:

答案 0 :(得分:1)

toHaveBeenCalled()仅可与spy一起使用。

在您的方法上创建一个spy,然后尝试

spyOn(obj, 'foo');
obj.foo();  // call foo()
expect(obj.foo).toHaveBeenCalled()

答案 1 :(得分:0)

您到底想测试什么?

  1. 测试foo是否正常工作。在这种情况下,只需从测试中调用foo()。如果抛出,则测试将失败。

  2. 测试某些 other 函数bar是否正常工作,其中“正确”表示应该调用foo。在这种情况下,请为foo创建一个间谍并在间谍上使用toHaveBeenCalled()。这可能需要您重组代码,以便可以以某种方式将foo间谍注入bar中。

从您的描述来看,似乎您同时想要两者,这与 unit 测试的原理背道而驰:您一次只能测试一件事。