2015-12-24 13 views
5

Tôi đang sử dụng mocha để chạy các bài kiểm tra được viết bằng nút. Giả thiết của tôi là mỗi bài kiểm tra của tôi sẽ bị cô lập với nhau. Điều đó dường như không đúng. Khi bạn chạy mocha trên một thư mục kiểm tra, nó xuất hiện để tải tất cả các tệp thử nghiệm với nhau, và sau đó thực thi từng bộ kiểm thử.Làm thế nào tôi có thể nhận được mocha để chạy thử nghiệm của tôi trong sự cô lập?

Điều này có thể ngắt sự cách ly khi bạn có các mô-đun được sử dụng trong một thử nghiệm, có thể bị ảnh hưởng bởi các mô-đun được sử dụng trong một thử nghiệm khác.

Trong Gist này (Failing Mocha Test) Tôi có hai mô-đun (a và b) và hai bài kiểm tra (a-test và b-test). Nếu bạn chạy Mocha một cách độc lập trên mỗi bài kiểm tra cả hai đều thành công:

$ mocha --ui tdd a-test 
$ mocha --ui tdd b-test 

Tuy nhiên, nếu tôi chạy những thử nghiệm với nhau, một thử nghiệm thất bại:

$ mocha --ui tdd . 

Là nó thực sự cần thiết để chạy mocha cho mỗi kiểm tra cá nhân để có được sự cô lập thích hợp?

Lưu ý: Lý do không thể kiểm tra là cháy một sự kiện gọi một singleton trong mô-đun b. Điều này không xảy ra trong việc thực hiện bình thường của thử nghiệm b. Vì thử nghiệm cung cấp bộ phụ thuộc hoàn chỉnh của nó (không bao gồm b), tôi đã rất ngạc nhiên khi tìm tất cả các mô-đun được nạp vào một môi trường thử nghiệm duy nhất.

Trả lời

2

Nếu bạn chạy tất cả các thông số cùng nhau trong một lệnh duy nhất, Nó sẽ tải tất cả các mô-đun vào một môi trường thử nghiệm duy nhất.

Nói chung, các rô-bốt Singleton thường khó kiểm tra nếu bạn không có mã để đặt lại bản sao đơn hoặc tạo một mã mới khi cần thiết.

Vì vậy, bạn có thể nên cấu trúc lại mã của mình. Thêm một chức năng thiết lập lại trong a.js để thiết lập lại targets = [];

Sau đó thêm video này vào b-test.js

suiteSetup("B", function(){ 
    a.reset(); 
}); 

Hoặc một cái gì đó như thế này sẽ giúp.

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