我在我的Node.js应用程序中有一个JS方法,我想单元测试。它会对服务方法进行多次调用,每次都会将该服务传递给一个回调函数;回调积累结果。使用Jasmine根据参数值存根JS回调
如何使用Jasmine来存储服务方法,以便每次调用存根时,都会调用由参数确定的响应的回调函数?
这是(像)的方法,我测试:
function methodUnderTest() {
var result = [];
var f = function(response) {result.push(response)};
service_method(arg1, arg2, f);
service_method(other1, other2, f);
// Do something with the results...
}
我想指定,当service_method调用与ARG1和ARG2,存根将调用与特定响应的F回调,并当用other1和other2调用它时,它将调用具有不同特定响应的相同回调。
我会考虑一个不同的框架。 (我尝试过Nodeunit,但没有得到它做我想做的。)
这里的两个答案曲解了我的问题;我想知道为什么。我真的在测试methodUnderTest();我想验证一下,在调用其依赖关系之后(在本例中为service_method()),它会累积结果。 – Ladlestein
好吧,据我所知你想在这里测试内部方法?但为什么你想嘲笑service_method()。这不是你模块的一部分吗?如果是这样,不要嘲笑它。 –
不,Andreas - 当然,我想测试methodUnderTest()。它依赖于service_method(),它不是返回一个值而是调用一个回调函数。 service_method()是我想要的存根。它会回复给f()和响应;我想要我的模拟service_method()回调它。 我已经成功地使用了Sinon.JS来存根service_method(),并调用带有stubbed“return”值的回调函数。 – Ladlestein