Впервые в модульном тестировании в целом и в Жасмине в частности.
Я установил переменную в обратном вызове 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");
});
});
});
});
документация объясняет использование, но не контекст, spyOn()
, поэтому я не могу сказать, создал ли я ошибку или неосознанно использую функцию.
Iможет опубликовать конструктор, если кто-то думает, что это имеет какое-то значение в диагностике, но я могу заверить вас, что это очень просто.
Я уверен, что это простое исправление с использованием некоторой базовой концепции модульного тестирования, которую я должен изучитьТрудный путь.Заранее спасибо.
PS Я понимаю, что я тестирую в этой ошибочной спецификации не то, что я описал.Я пробираюсь через руководство по API, ищу способ добраться до массива arguments в вызове функции, чтобы я мог провести специальный тест на arguments[0]
.Подсказки приветствуются, но не обязательно.Я разберусь.