Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
void方法测试javascript_Javascript_Jasmine - Fatal编程技术网

void方法测试javascript

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

我有一个用javascript编写的方法,我正在用Jasmine来测试这个方法。 该方法是调用另一个方法的void类型

我必须测试这个方法是否调用了另一个方法,当前的方法返回void

我应该在expect子句中写些什么来比较它

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();