void方法测试javascript
我有一个用javascript编写的方法,我正在用Jasmine来测试这个方法。 该方法是调用另一个方法的void类型 我必须测试这个方法是否调用了另一个方法,当前的方法返回void 我应该在expect子句中写些什么来比较它void方法测试javascript,javascript,jasmine,Javascript,Jasmine,我有一个用javascript编写的方法,我正在用Jasmine来测试这个方法。 该方法是调用另一个方法的void类型 我必须测试这个方法是否调用了另一个方法,当前的方法返回void 我应该在expect子句中写些什么来比较它 sendMessage=function(data){ if(data!=null) { postMessage(data); } } 茉莉花代码: describe('unit test void method', function(){ it("se
sendMessage=function(data){
if(data!=null)
{
postMessage(data);
}
}
茉莉花代码:
describe('unit test void method', function(){
it("sendMessage method should invoke the postMessage", function () {
expect(sendMessage("hello");
})
})
我应该将其与什么进行比较?听起来您希望使用它来跟踪调用方法的时间和频率:
expect(obj.method.calls.any()).toBe(true);
詹姆斯是对的。这是一个间谍功能,尽管我使用另一种方法 在每个功能之前的设置中的某个位置:
spyOn(YourObject, 'postMessage').and.callThrough();
YourObject
是包含函数的任何对象
期望:
it('expects postMessage() to have been called', function () {
// make the call to this function
YourObject.postMessage();
// Check internal function
expect(YourObject.postMessage).toHaveBeenCalled();
});
:D示例将更有用。应使用void方法要求对象对其自身做一些事情(更改其状态)或在不期望响应的情况下发出notifaction。如果是前者,则可以在函数运行后检查是否对目标对象进行了任何更改。如果是后者,只是一种信息方法,那么您通常不会对其进行单元测试,因为它不会真正影响您可以测试的任何内容。如果是其他内容,您是否正确使用了void?它应该是您的object.postMessage();而不是YourObject.sendMessage();