2013-02-05 23 views
8

Tôi chỉ đang học thư viện Jasmine, và tôi nhận thấy rằng Jasmine có số lượng xác nhận tích hợp rất hạn chế. Tôi cũng nhận thấy rằng, mặc dù có số lượng giới hạn như vậy, hai trong số các xác nhận của nó dường như là thừa: toBeDefined/toBeUndefined.Jasmine: Tại sao lại làBeUndefined và not.toBeDefined?

Nói cách khác, cả hai dường như để kiểm tra chính xác những điều tương tự:

expect(1).toBeDefined(); 
expect(undefined).not.toBeUndefined(); 

Có một số lý do cho điều này, giống như một trường hợp toBeDefined là không giống như toBeUndefined? Hay đây chỉ là một khẳng định trong Jasmine có hai cách hoàn toàn bình đẳng khi được viện dẫn?

+3

"toBe ... or not.toBe ..." - đó là câu hỏi. Tôi ở đây cả tuần – demoncodemonkey

Trả lời

6

Người ta có thể giả định tương tự cho toBeTruthytoBeFalsy, hoặc toBeLessThantoBeGreaterThan (mặc dù tôi đoán khẳng định mất tích từ cuối hai là toEqual). Cuối cùng nó đi xuống để dễ đọc và sở thích người dùng.

Để cung cấp cho bạn câu trả lời hoàn chỉnh hơn, có thể hữu ích khi xem mã được gọi cho các chức năng này. Mã được thực hiện đi qua các đường dẫn riêng biệt (vì vậy toBeUndefined không đơn giản là !toBeDefined). Câu trả lời duy nhất thực sự có ý nghĩa là dễ đọc (hoặc đưa ra yêu cầu tính năng gây phiền nhiễu). https://github.com/pivotal/jasmine/blob/master/src/core/Matchers.js#L135

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