簡體   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