2013-03-04 32 views
23

Trong tất cả các khung kiểm tra tôi đã sử dụng, có một tham số tùy chọn để chỉ định bạn sở hữu thông báo lỗi tùy chỉnh.Làm cách nào để chuyển thông báo lỗi tùy chỉnh tới trình ghép hoa nhài?

Điều này có thể rất hữu ích và tôi không thể tìm cách để thực hiện điều này với hộp hoa nhài.

Tôi đã có 3 nhà phát triển khác hỏi tôi về chức năng chính xác này và khi nói đến hoa nhài tôi không biết phải nói gì với họ.

Có thể chỉ định thông báo lỗi tùy chỉnh của riêng bạn trên mỗi xác nhận không?

Trả lời

9

Nếu bạn nhìn vào mã nguồn của hoa nhài, bạn sẽ thấy rằng không có cách nào để đặt tin nhắn từ bên ngoài một que diêm. Ví dụ: đối sánh toBeNaN.

/** 
* Matcher that compares the actual to NaN. 
*/ 
jasmine.Matchers.prototype.toBeNaN = function() { 
    this.message = function() { 
     return [ "Expected " + jasmine.pp(this.actual) + " to be NaN." ]; 
    }; 

    return (this.actual !== this.actual); 
}; 

Như bạn có thể thấy thông báo được mã hóa cứng vào khớp và sẽ được đặt khi bạn gọi trình ghép. Cách duy nhất tôi có thể nghĩ ra để có thông điệp của riêng bạn là viết đối sánh của bạn như được mô tả here

+0

Nếu bạn muốn bổ sung thêm chi tiết để nhắn hardcoded hoa nhài - tất cả quẹt có tham số tùy chọn cho điều đó - kiểm tra @ Xotabu4 câu trả lời để biết thêm detials – Fabio

5

This issue là theo dõi quan tâm đến việc triển khai thông báo lỗi tùy chỉnh bằng cách sử dụng cơ chế .because().

Trong thời gian chờ đợi, avrelian đã tạo một thư viện đẹp thực hiện các thông báo lỗi tùy chỉnh bằng cách sử dụng cơ chế since() - jasmine-custom-message.

8

Được thêm tham số tùy chọn cho tất cả quẹt (Tobe, toContain, và những người khác), vì vậy bạn có thể sử dụng:

expect(true).toBe(false, 'True should be false'). 

Sau đó, trong đầu ra nó sẽ giống như thế này:

Message: 
    Expected true to be false, 'True should be false'. 

Liên kết đến cam kết (điều này không được mô tả trong tài liệu): https://github.com/ronanamsterdam/DefinitelyTyped/commit/ff104ed7cc13a3eb2e89f46242c4dbdbbe66665e

0

Bạn có thể xác định đối sánh tùy chỉnh trong phạm vi toàn cầu, ghi đè lỗi m essage trong hoa nhài như sau:

beforeEach(function() { 
    jasmine.addMatchers({ 
     toReport: function() { 
      return { 
       compare: function (actual, expected, msg) { 
        var result = {pass: actual == expected}; 
        result.message = msg; 
        return result; 
       } 
      } 
     } 
    }); 
}); 
Các vấn đề liên quan