我正在阅读rspec-mocks并对 Message Expectations 感到有些困惑。
消息期望是测试替身将在示例结束前的某个时间收到消息的期望。如果收到消息,则期望得到满足。如果不是,则示例失败。
validator = double("validator") validator.should_receive(:validate).with("02134") zipcode = Zipcode.new("02134", validator) zipcode.valid?
所以我的理解是你创建一个虚拟对象并指定它应该“接收”一条带有参数的消息(这是来自 ActiveModel的验证02134
) 。如果它在某个时候这样做,那么这个测试将通过。
我的问题是:
为什么能
validator
传到Zipcode.new
?您的应用程序代码是否应该接受额外的参数(测试替身)?“接收消息”对于测试替身究竟意味着什么?这是否意味着它将被消息(在本例中为
validate
方法)调用?
谢谢!