單元測試新手,尤其是Jasmine。使用Jasmine進行單元測試:beforeEach()中的代碼未在測試的spyOn中看到()
我在beforeEach()
回調中設置了一個變量,但它在第二個測試中似乎不起作用。它應該在之前每隔進行初始化測試,對吧?我確定我的電話是spyOn()
,但我不知道如何解決。
評論解釋通行證和失敗:
describe("Test suite for my library", function() {
var html,
body,
play,
...
// custom matcher...
beforeEach(function() {
this.addMatchers({
toBeInstanceOf : function (constructr) {
return this.actual instanceof constructr;
});
});
});
describe("Within the Button object", function() {
beforeEach(function() {
play = new Button("play", false);
});
describe("play", function() {
// This test passes, as expected...
it("should be an instance of the Button object", function() {
expect(play).toBeInstanceOf(Button);
});
});
describe("play.name", function() {
// This test failed with the message
// "Expected spy Button to have been called
// with [ 'play', false ] but it was never called."
it("should be the first argument passed to the Button constructor", function() {
spyOn(window, "Button");
play = new Button("play", false); // ...until I added this line. Now it passes.
expect(window.Button).toHaveBeenCalledWith("play", false);
});
// This test passes, even if the one above fails.
it("should be 'play'", function() {
expect(play.name).toBe("play");
});
});
});
});
的documentation解釋用法,而不是背景下,spyOn()
,所以我不能,如果我已經創建了一個錯誤或者說,如果我不知不覺中利用了一個功能。
如果有人認爲它在診斷中有任何區別,我可以發佈構造函數,但我可以向你保證它已經很簡單。
我敢肯定,這是一個簡單的修復,使用一些基本的單元測試概念,我不得不努力學習。提前致謝。
P.S.我意識到我正在測試的失敗規範不是我所描述的。我正在通過API指南工作,尋找一種方法來獲取函數調用中的參數數組,因此我可以在arguments[0]
上進行特定的測試。提示是讚賞,但不是必要的。我會弄清楚。
切換順序和CallThrough()做到了。 +1並被接受。非常感謝。 – parisminton 2012-01-21 01:39:46
@parisminton。我在jamsine測試用例上發佈了一個問題。 http://stackoverflow.com/questions/26583283/jasmine-junit-testing-of-delegate-callback-of-function-args ..真正appriciate如果你能幫助。問候 – 2014-10-28 13:58:18