2014-08-27 18 views
10

Có một số thử nghiệm mocha yêu cầu dữ liệu từ các cuộc gọi hàm trước, nhưng sau đó bởi vì nó sử dụng dịch vụ web và muốn nó chờ đợi một khoảng thời gian xác định trước khi chạy thử nghiệm tiếp theo như:Làm cho Mocha chờ trước khi chạy thử nghiệm tiếp theo

var global; 

it('should give some info', function(done) { 
    run.someMethod(param, function(err, result) { 
    global = result.global 
    done(); 
    }); 
}); 

wait(30000); // basically block it from running the next assertion 

it('should give more info', function(done) { 
    run.anotherMethod(global, function(err, result) { 
    expect(result).to.be.an('object'); 
    done(); 
    }); 
}); 

Bất kỳ ý tưởng nào cũng sẽ được đánh giá cao. Cảm ơn!

Trả lời

13

setTimeout chắc chắn có thể giúp ích, nhưng có thể có cách "sạch hơn" để thực hiện điều đó. docs actually says để sử dụng this.timeout(delay) để tránh lỗi hết thời gian chờ khi kiểm tra mã không đồng bộ, vì vậy hãy cẩn thận.

var global; 

it('should give some info', function(done) { 
    run.someMethod(param, function(err, result) { 
    global = result.global 
    done(); 
    }); 
}); 



it('should give more info', function(done) { 
    this.timeout(30000); 

    setTimeout(function() { 
     run.anotherMethod(global, function(err, result) { 
     expect(result).to.be.an('object'); 
     done(); 
     }); 
    }, 30000); 
}); 
+0

Cảm ơn, Flops, điều đó sẽ hoạt động ngay bây giờ. Tôi đã viết sai setTimeout mà tôi nhận ra bây giờ, khi tôi đang thử nghiệm. Cảm ơn :) –

+1

Tôi nghĩ câu hỏi là về hai bài kiểm tra liên tục để bảo quản trật tự? – Zlatko

+0

Zlatko, câu hỏi là về việc thực hiện chậm kiểm tra tiếp theo trong truy vấn. this.settimeout trong ví dụ này là lỗi hết thời gian chờ mặc định là 20000 trong mocha nếu i'm đúng. – Flops

7

Trong khi this.timeout() sẽ kéo dài thời gian chờ của một thử nghiệm đơn, nó không phải là câu trả lời cho câu hỏi của bạn. this.timeout() đặt thời gian chờ của bài kiểm tra hiện tại hiện tại của bạn.

Nhưng đừng lo, bạn vẫn ổn. Các thử nghiệm không chạy song song, chúng được thực hiện theo chuỗi, vì vậy bạn không nên gặp vấn đề với cách tiếp cận toàn cầu của mình.

+0

Thực ra, chúng chạy song song phải không? Hoặc là song song không giống như không đồng bộ? https://mochajs.org/ – jntme

+1

Bạn nói đúng, song song! == không đồng bộ. Mocha kiểm tra cụ thể, chúng chạy theo chuỗi. Một, hơn cái kia, so với cái tiếp theo, v.v. – Zlatko

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