I miei test non riesce per il seguente motivo:Come si scrive un test al gelsomino per un metodo che contiene una variabile globale da un'altra classe/file?
ReferenceError: Can't find variable: moving_canvas_context in file (line 5)
capisco il motivo per il test sta fallendo. Non capisce la variabile poiché è definita in un file javascript separato. Tuttavia, è dichiarato globalmente e funziona nella realtà.
Come si scrive un test al gelsomino per questa funzione clear_canvas?
Canvas_actions JavaScript:
(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 prova per 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);
Grazie. La tua risposta è stata molto utile. Seguendo il tuo esempio, se rimuovo tutti i riferimenti globali, come metteresti alla prova un metodo come clearRect o drawImage che si occupa del disegno sulla tela? schernisce? – John
Sì, mock per gli oggetti in isolamento, ma più controlli di stile di integrazione per oggetti che gestiscono oggetti esterni. Questi sono solo test che esercitano un oggetto esterno e controllano il suo stato per il comportamento previsto da testare. –