xét nghiệm của tôi thất bại vì lý do sau:Làm cách nào để viết một thử nghiệm hoa nhài cho một phương thức có chứa biến toàn cầu từ một lớp/tệp khác?
ReferenceError: Can't find variable: moving_canvas_context in file (line 5)
tôi hiểu được lý do kiểm tra được không. Nó không hiểu biến vì nó được định nghĩa trong một tệp javascript riêng biệt. Tuy nhiên, nó được tuyên bố trên toàn cầu và hoạt động trong thực tế.
Làm cách nào để viết bài kiểm tra hoa nhài cho hàm clear_canvas này?
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);
Kiểm tra Jasmine cho 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);
Cảm ơn bạn. Câu trả lời của bạn rất hữu ích. Theo ví dụ của bạn, nếu tôi loại bỏ tất cả các tham chiếu toàn cầu, bạn sẽ thử nghiệm một phương thức như clearRect hoặc drawImage như thế nào với các bản vẽ trên canvas? mocks? – John
Có, mocks cho các đối tượng của bạn trong sự cô lập, nhưng kiểm tra phong cách tích hợp hơn cho các đối tượng đối phó với các đối tượng bên ngoài. Đây chỉ là các bài kiểm tra thực hiện một đối tượng bên ngoài và kiểm tra trạng thái của nó đối với hành vi dự định đang được kiểm tra. –