Có nhiều hàm xác nhận nếu bạn đang viết kiểm tra. Nhưng đối với assertiona trong mã chính, không có bất kỳ và bạn có thể cuộn của riêng bạn một cách dễ dàng.
Thêm một cái gì đó như thế này để environment.rb
:
class AssertFailure < Exception
end
def assert(message = 'assertion failed')
unless block_given? and yield
raise message
end
end
và làm cho nó một không-op trong environments/production.rb
của bạn để có tối thiểu chi phí
def assert(message = 'assertion failed')
end
Sau đó, trong mã của bạn, bạn có thể khẳng định để nội dung trái tim của bạn:
assert { value == expected_value }
assert('value was not what was expected') { value == expected_value }
Nếu value
không bằng expected_value
và bạn không chạy trong sản xuất, ngoại lệ sẽ được nâng lên.
Nguồn
2009-01-28 22:20:57
Tôi không chắc chắn nếu phương pháp khẳng định được dự định là một phương pháp của lớp AssertFailure ở trên hay không. Nó không giống như nó nên, nhưng nếu tôi sử dụng mã tôi nhận được một "kết thúc $ không mong đợi, mong đợi keyword_end" lỗi. Bạn có thể vui lòng xây dựng và chỉ ra nếu yêu cầu/bao gồm là cần thiết để sử dụng xin vui lòng? (cũng - nó có vẻ giống như một phần của việc triển khai ứng dụng - vì vậy thư mục cấu hình là một nơi thích hợp cho mã như vậy?) – DavidJ
Tôi nghĩ rằng nên có một dòng 'end' ngay sau dòng' class'. – dubek
Bạn có thể giải thích những gì tuyên bố lớp học đang làm ở đó không? làm thế nào nó đi vào chơi? –