2011-09-17 24 views
5

Tôi đang sử dụng Ruby on Rails 3.0.9 và RSpec 2. Tôi biết rằng có một số vấn đề nổi tiếng về việc sử dụng RSpec và một before_validation gọi lại, vì các before_validation có vẻ như không được kích hoạt khi chạy trong các tập tin spec. Bạn có thể tìm thấy rất nhiều vấn đề tương tự (ví dụ: bằng cách thực hiện một số Google search).RSpec và 'before_validation' callback hành

Tôi tự hỏi, tại thời điểm này, có ai đã đưa ra giải pháp cho vấn đề này không?

P.S.: Tôi đã đọc rằng một số người đã đề xuất sử dụng mocks, những người khác chuyển từ số before_validation sang một số cuộc gọi lại khác (ví dụ: thành before_save) hoặc sử dụng phương thức save(:validate => false) (để bỏ qua xác thực) ... v.v. ... nhưng dường như không ai giải quyết vấn đề "thực". Bạn nghĩ gì nên được thực hiện trong những trường hợp như vậy để giải quyết vấn đề?

+1

Không có lý do gì để 'before_validation' không được kích hoạt trong các thử nghiệm - kiểm tra mô hình không làm bất cứ điều gì đặc biệt trong khi thiết lập. Tôi thành thật nghĩ rằng mọi người không biết cách viết những bài kiểm tra này. Bạn có một thử nghiệm bạn đang cố gắng để vượt qua? –

+0

+1 để biết ví dụ về những gì không hoạt động. Hãy cho chúng tôi một mô hình đơn giản với kiểm tra before_validation và thông số bạn đang viết để xác thực điều đó. –

+0

http://stackoverflow.com/questions/7361036/rspec2-testing-a-before-validation-method Bạn có gọi .valid? –

Trả lời

0

nếu bạn không thể đi lại bằng cách sử dụng mocks, hãy thử tải lại bản sao của bạn bằng cách sử dụng phương thức tải lại và sau đó thử nghiệm của bạn.