2013-11-27 19 views
7

Sử dụng khung kiểm tra javascript mocha, tôi muốn có thể có một số thử nghiệm (tất cả không đồng bộ) chỉ thực thi sau khi kiểm tra đã xác định trước đó đã trôi qua.Làm cách nào để chạy thử nghiệm mocha chỉ sau khi thử nghiệm không đồng bộ trước đó đã qua?

Tôi không muốn phải lồng ghép các thử nghiệm này với nhau.

describe("BBController", function() { 
    it("should save", function(done) {}); 
    it("should delete", function(done) {}); 
}) 

Trả lời

-4

nếu kiểm tra của bạn được thiết lập đúng cách, chỉ thử nghiệm một mẩu nhỏ logic nghiệp vụ thì bạn có thể chạy thử nghiệm không đồng bộ nhưng không nên thực hiện các thử nghiệm khác. cách để có được một thử nghiệm để hoàn thành là phải làm như sau:

describe("BBController", function() { 
    it("should save", function(done) { 
     // handle logic 
     // handle assertion or other test 
     done(); //let mocha know test is complete - results are added to test list 
    }); 
    it("should delete", function(done) { 
     // handle logic 
     // handle assertion or other test 
     done(); //let mocha know test is complete - results are added to test list 
    }); 
}); 

một lần nữa, không kiểm tra nên cần phải chờ kiểm tra khác để chạy để vượt qua, nếu bạn có vấn đề này thì bạn nên nhìn vào cách để impove tiêm phụ thuộc của bạn hoặc chuẩn bị thử nghiệm với phương pháp trước

+1

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. –

+0

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

+0

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

2

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:

  1. Các thử nghiệm đầu tiên và thứ hai đã kết thúc.
  2. 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.

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