Tôi có một lớp thông báo, có thể được khởi tạo bằng cách chuyển các đối số vào hàm tạo hoặc bằng cách không chuyển đối số và sau đó thiết lập các thuộc tính sau đó với các trình truy cập. Có một số tiền xử lý đang diễn ra trong các phương thức setter của các thuộc tính.Làm cách nào để xác nhận hành vi khởi tạo với RSpec?
Tôi đã có các thử nghiệm để đảm bảo các phương thức setter làm những gì chúng được cho là, nhưng tôi không thể tìm ra cách tốt để thử nghiệm phương thức khởi tạo thực sự gọi các bộ định cư.
class Message
attr_accessor :body
attr_accessor :recipients
attr_accessor :options
def initialize(message=nil, recipients=nil, options=nil)
self.body = message if message
self.recipients = recipients if recipients
self.options = options if options
end
def body=(body)
@body = body.strip_html
end
def recipients=(recipients)
@recipients = []
[*recipients].each do |recipient|
self.add_recipient(recipient)
end
end
end
có thể hướng dẫn ở đây: http://stackoverflow.com/questions/316294/rspec-how-to-stub-an-instance-method-called-by-constructor –