Sử dụng tùy chọn --bail
. Hãy chắc chắn rằng bạn đang sử dụng ít nhất mocha 0.14.0. (Tôi đã thử nó với các phiên bản cũ hơn mà không thành công.)
Trước tiên, bạn không cần phải làm gì để mocha chạy thử nghiệm chỉ sau khi thử nghiệm trước đó kết thúc. Đó là cách mocha hoạt động theo mặc định. Lưu này để test.js
:
describe("test", function() {
this.timeout(5 * 1000); // Tests time out in 5 seconds.
it("first", function (done) {
console.log("first: do nothing");
done();
});
it("second", function (done) {
console.log("second is executing");
// This test will take 2.5 seconds.
setTimeout(function() {
done();
}, 2.5 * 1000);
});
it("third", function (done) {
console.log("third is executing");
// This test will time out.
});
it("fourth", function (done) {
console.log("fourth: do nothing");
done();
});
});
Sau đó thực hiện nó với:
mocha -R spec test.js
Bạn sẽ không thấy sự bắt đầu thử nghiệm thứ tư cho đến khi:
- Các thử nghiệm đầu tiên và thứ hai đã kết thúc.
- Các thử nghiệm thứ ba đã hết thời gian chờ.
Bây giờ, chạy nó với:
mocha -R spec --bail test.js
Mocha sẽ ngừng ngay sau khi kiểm tra 3 thất bại.
Bạn chỉ đang nói rằng các bài kiểm tra không được cấu trúc như tôi đã hỏi, điều này không trả lời câu hỏi. Ngoài ra, mã của bạn chỉ thực hiện cuộc gọi() không liên quan đến việc đặt bất kỳ loại phụ thuộc nào như tôi đã hỏi. Tôi cho rằng điều bạn thực sự muốn nói là mocha không hỗ trợ hình thức phụ thuộc này. –
Không trả lời câu hỏi theo bất kỳ cách nào ... Như Tim đã nói. Đã xong không liên quan đến câu hỏi này. – mbochynski
câu trả lời nói rằng các bài kiểm tra không được thiết lập chính xác, không có bài kiểm tra nào phụ thuộc vào bất kỳ bài kiểm tra nào khác đang chạy hợp lệ. bất kỳ thiết lập nào cần chạy thử nghiệm sẽ được chạy trong khối trước, thực tế là bạn nên chạy thử nghiệm theo thứ tự ngẫu nhiên để đảm bảo bạn không có phụ thuộc kiểm tra như vậy – kkemple