[英]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.