繁体   English   中英

茉莉花单元测试:如何在传递给被测方法的函数参数中监视Function.prototype.call()?

[英]Jasmine Unit Testing: How can I spy on Function.prototype.call() in a function parameter that is passed to my method under test?

我想使用茉莉花来测试需要Function参数的函数

var functionUnderTest = function(functionParameter) {
     functionParameter.call();
}

上面的functionParameter是一个Javascript函数,调用方法是Function.prototype上定义的方法。 如何监视调用属性以确保其被调用?

以下似乎不起作用

it("should call the functionParameter passed to it", function() {
    var mockFunction = function() {};

    spyOn(mockFunction, 'call');
    functionUnderTest(mockFunction);

    expect(mockFunction.call).toHaveBeenCalled();
}

因为它导致:

Error: Expected spy call to have been called.

大概是因为茉莉间谍拥有它自己的call()函数。

我也试过了,但是它也不起作用:

it("should call the functionParameter passed to it", function() {
    var mockFunction = function() {};

    spyOn(mockFunction.prototype, 'call');
    functionUnderTest(mockFunction);

    expect(mockFunction.prototype.call).toHaveBeenCalled();
}

这次,错误是:

TypeError: Cannot read property 'slice' of undefined

调用栈指向:

Expectation.toHaveBeenCalled

我想做的事可能吗? 我已经呆了几个小时了,似乎我对茉莉的理解缺少了一些基本知识。

根据Bergi的建议,以下作品:

it("should call the functionParameter passed to it", function() {
    var mockFunction = jasmine.createSpy('mockFunction')

    functionUnderTest(mockFunction);

    expect(mockFunction).toHaveBeenCalled();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM