Tôi đang cố gắng kiểm tra rằng hàm tạo của tôi sẽ ném một lỗi bằng cách sử dụng đá quý Teaspoon cho Rails, với ChaiJS làm thư viện xác nhận của tôi.ChaiJS mong đợi hàm tạo để ném lỗi
Khi tôi chạy thử nghiệm sau đây:
it('does not create the seat if x < 0', function() {
var badConstructor = function() {
return new Seat({ radius: 10, x: -0.1, y: 0.2, seat_number: 20, table_number: 30});
};
expect(badConstructor).to.throw(Error, 'Invalid location');
});
tôi nhận được kết quả này:
thất bại:
1) Seat does not create the seat if x < 0
Failure/Error: undefined is not a constructor (evaluating 'expect(badConstructor).to.throw(Error(), 'Invalid location')')
Các nhà xây dựng được ném ra lỗi, nhưng tôi nghĩ rằng tôi không viết kiểm tra đúng cách.
Khi tôi cố gắng chạy expect(badConstructor())
sau đó tôi nhận được kết quả:
Failures:
1) Seat does not create the seat if x < 0
Failure/Error: Invalid location
Có phải đó là 'expect (badConstructor())'? tức là, bạn cần gọi hàm. – Andy
Tôi vừa thử nó - vô ích. Bây giờ tôi nhận được một đầu ra lỗi khác - tôi đã thêm nó vào OP. – ThomYorkkke
Vì vậy, có vẻ như nó đang hoạt động bình thường vì "vị trí không hợp lệ" là một phần của thông báo lỗi. Bạn cần phải chọn điều đó trong bài kiểm tra của mình hoặc thêm câu lệnh 'try/catch' vào hàm của bạn để trả về lỗi mà bạn có thể kiểm tra. – Andy