2014-06-20 16 views
7

Tôi nhận thấy rằng QUnit.module cung cấp các cuộc gọi lại thiết lập và chia nhỏ xung quanh từng thử nghiệm.Xác định các biến kiểm tra trong thiết lập QUnit

QUnit.module("unrelated test", { 
    setup: function() { 
     var usedAcrossTests = "hello"; 
    } 
}); 
QUnit.test("some test", function(assert) { 
    assert.deepEqual(usedAcrossTests, "hello", "uh oh"); 
}); 
QUnit.test("another test", function(assert) { 
    assert.deepEqual(usedAcrossTests.length, 5, "uh oh"); 
}); 

Như đã thấy trong setup, tôi muốn khai báo một biến để sử dụng trên các QUnit.test s sau. Tuy nhiên, vì biến chỉ có phạm vi chức năng, hai thử nghiệm không thành công, nói rằng usedAcrossTests is undefined.

Tôi có thể xóa tuyên bố var, nhưng sau đó điều đó sẽ gây ô nhiễm phạm vi toàn cầu. Đặc biệt nếu tôi sẽ có nhiều mô-đun, tôi không muốn khai báo các biến thử nghiệm cụ thể như toàn cầu.

Có cách nào để chỉ định, trong setup biến được sử dụng trong các thử nghiệm trong mô-đun, mà không gây ô nhiễm phạm vi toàn cầu?

Trả lời

15

Tôi vừa nhận ra rằng nó đơn giản hơn câu trả lời trước đây của tôi. Chỉ cần thêm tất cả các thuộc tính mà bạn muốn truy cập trong tất cả các thử nghiệm khác của mô-đun trong đối tượng hiện tại.

QUnit.module("unrelated test", { 
    setup: function() { 
     this.usedAcrossTests = "hello"; // add it to current context 'this' 
    } 
}); 

Và sau đó trong mỗi bài kiểm tra nơi bạn muốn sử dụng.

QUnit.test("some test", function(assert) { 
    assert.deepEqual(this.usedAcrossTests, "hello", "uh oh"); 
}); 

Hope this helps

Các vấn đề liên quan