ActiveRecord::Base
có API lớn với nhiều phương thức cho cả đối tượng tìm kiếm và lưu. Ví dụ, AR::B
đối tượng của bạn có thể đã được khởi tạo từ một số phương pháp:Làm thế nào để bạn khai thác ActiveRecord :: Phương pháp cơ sở mà không đưa ra các giả định về cách nó được sử dụng?
Foo.new(…)
Foo.create(…)
Foo.find(…)
Foo.find_by_sql(…)
Foo.find_[all_]by_*(…)
bar.foos
(hiệp hội)- ... và tìm phương pháp trên hiệp hội, tất nhiên
Tương tự như vậy, các đối tượng trong câu hỏi có thể được tồn bởi một vài phương pháp khác nhau:
foo.create
hoặcfoo.create!
foo.save
hoặcfoo.save!
foo.update_attributes
hoặcfoo.update_attributes!
Bây giờ, khi viết các bài kiểm tra đơn vị, thực hành tốt là thực hiện các cuộc gọi phương thức bên ngoài để kiểm tra của bạn có thể tập trung vào logic nghiệp vụ của phương pháp được đề cập. Tuy nhiên, khi làm việc với các đối tượng AR::B
- ví dụ trong các kiểm tra đơn vị điều khiển - có vẻ như bạn phải cam kết với một trong các phương pháp trên, khi thực sự xa như logic nghiệp vụ của phương pháp thì không nên quan trọng mà bạn chọn.
Bạn có phải kết hợp hành vi của phương pháp của bạn một cách chặt chẽ với việc triển khai của nó hay tôi thiếu một vài thứ đơn giản?