moich testów nie powiedzie się z następującego powodu:Jak napisać test jaśminowy dla metody zawierającej zmienną globalną z innej klasy/pliku?
ReferenceError: Can't find variable: moving_canvas_context in file (line 5)
Rozumiem powód test zakończył się niepowodzeniem. Nie rozumie tej zmiennej, ponieważ jest ona zdefiniowana w oddzielnym pliku javascript. Jest jednak deklarowana globalnie i działa w rzeczywistości.
Jak napisać test jaśminowy dla tej funkcji clear_canvas?
JavaScript Canvas_actions:
(function() {
window.Canvas_Actions = (function() {
function Canvas_Actions() {}
Canvas_Actions.prototype.clear_canvas = function() {
moving_canvas_context.clearRect(0, 0, moving_canvas.width, moving_canvas.height);
main_canvas_context.drawImage(window.background_image, 0, 0, main_canvas.width, main_canvas.height);
return window.canvas_objects = [];
};
return Canvas_Actions;
})();
}).call(this);
Jasmine Test Canvas_actions:
(function() {
describe('Canvas Actions', function() {
return describe('clear_canvas', function() {
return it('clears the canvases and deletes all objects', function() {
var actions;
jasmine.getFixtures().fixturesPath = "../spec/javascript/fixtures";
loadFixtures("canvas_fixture.html");
actions = new Canvas_Actions();
actions.clear_canvas();
return expect(canvas_objects).toEqual([]);
});
});
});
}).call(this);
Dziękuję. Twoja odpowiedź była bardzo pomocna. Podążając za twoim przykładem, jeśli usunę wszystkie globalne odniesienia, w jaki sposób przetestujesz metodę taką jak clearRect lub drawImage, która zajmuje się rysowaniem na płótnie? drwi? – John
Tak, mocks dla twoich obiektów w izolacji, ale więcej stylu integracji sprawdza obiekty, które mają do czynienia z obiektami zewnętrznymi. Są to tylko testy, które wykonują zewnętrzny obiekt i sprawdzają jego stan pod kątem zamierzonego zachowania podczas testu. –