我正在尝试使用茉莉花编写单元测试用例。我有一种情况,我正在将数据传递给具有不同属性的函数,我只想检查该函数是否成功执行或没有任何错误。我尝试了expect(foo).toHaveBeenCalled()
,但是它期望一个间谍而不是一个函数。在这种情况下,请提出任何写测试用例期望的方法。
答案 0 :(得分:1)
toHaveBeenCalled()
仅可与spy
一起使用。
在您的方法上创建一个spy
,然后尝试
spyOn(obj, 'foo');
obj.foo(); // call foo()
expect(obj.foo).toHaveBeenCalled()
答案 1 :(得分:0)
您到底想测试什么?
测试foo
是否正常工作。在这种情况下,只需从测试中调用foo()
。如果抛出,则测试将失败。
测试某些 other 函数bar
是否正常工作,其中“正确”表示应该调用foo
。在这种情况下,请为foo
创建一个间谍并在间谍上使用toHaveBeenCalled()
。这可能需要您重组代码,以便可以以某种方式将foo
间谍注入bar
中。
从您的描述来看,似乎您同时想要两者,这与 unit 测试的原理背道而驰:您一次只能测试一件事。