2015-11-17 28 views

Trả lời

16

Có rất nhiều cách để một thất bại giả - như assert.fail() đề cập bởi @DmytroShevchenko -, nhưng thông thường, người ta có thể tránh được những nạng và thể hiện mục đích của thử nghiệm trong một cách tốt hơn, điều này sẽ dẫn đến các thông điệp có ý nghĩa hơn nếu các kiểm tra thất bại.

Ví dụ, nếu bạn mong đợi một ngoại lệ được ném ra, tại sao không nói như vậy trực tiếp:

expect(function() { 
    // do stuff here which you expect to throw an exception 
}).to.throw(Error); 

Như bạn thấy, khi kiểm tra trường hợp ngoại lệ, bạn phải quấn mã của bạn trong một chức năng ẩn danh.

Tất nhiên, bạn có thể tinh chỉnh thử nghiệm bằng cách kiểm tra loại lỗi cụ thể hơn, thông báo lỗi dự kiến, v.v. xem .throw trong số Chai docs để biết thêm.

+2

Tôi hoàn toàn đồng ý rằng những gì bạn đã vạch ra là một cách tiếp cận tốt hơn. –

37

assert.fail(). Bạn có thể sử dụng nó như thế này:

assert.fail(0, 1, 'Exception not thrown'); 
+2

... và câu trả lời của bạn là câu trả lời đúng trong trường hợp không có tùy chọn nào khác, vì vậy bạn cũng có được ý kiến ​​của mình :) – hashchange

+0

@hashchange Có một ví dụ hay nơi bạn sẽ sử dụng thay vì "to.throw" và đó là trong trường hợp bạn có thể ném lỗi trong các nhà xây dựng đối tượng. – Mayhem93

+4

Ngoài ra còn có một [** 'expect.fail()' **] (http://chaijs.com/api/bdd/#method_fail) – randominstanceOfLivingThing

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