void 方法测试 javascript

jis*_*512 7 javascript jasmine

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

我必须测试该方法是否正在调用其他方法,当前方法是否返回 void。

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

sendMessage=function(data){
if(data!=null)
 {
  postMessage(data);
 }
}
Run Code Online (Sandbox Code Playgroud)

茉莉花代码:

describe('unit test void method', function(){
    it("sendMessage method should invoke the postMessage", function () {
           expect(sendMessage("hello");
    }) 
})
Run Code Online (Sandbox Code Playgroud)

我应该将它与什么进行比较?

Wil*_* SH 6

詹姆斯是对的。这是一个间谍功能,尽管我使用另一种方法。

在 beforeEach 函数的设置中的某处:

spyOn(YourObject, 'postMessage').and.callThrough();
Run Code Online (Sandbox Code Playgroud)

YourObject是包含该函数的任何对象。

期望:

it('expects postMessage() to have been called', function () {

    // make the call to this function
    YourObject.postMessage();

    // Check internal function
    expect(YourObject.postMessage).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)


Jam*_*ght 1

听起来您想使用Jasmine 间谍来跟踪调用方法的时间和频率:

expect(obj.method.calls.any()).toBe(true);
Run Code Online (Sandbox Code Playgroud)