是否有一种 RSpec 方法可以对传递给其他对象的参数的返回值进行断言?
说我期待Checker#notify
打电话Mailer.send(report)
,我想断言report.errors_count
会返回2
?
我非常接近这个:
expect(Mailer).to have_received(:send).with(hash_including(:errors_count => 2))
但这仅适用于哈希。如果我通过 aPORO
或 a怎么办Struct
?duck_type()
也非常接近,但只是断言定义了方法,而不是它的返回值(这是这里的重要部分)。
PS:理想情况下,我想避免做这样的事情:
expected_report = Report.new.tap{|r| r.errors_count = 2}
expect(Mailer).to have_received(:send).with(expected_report)
- 我宁愿测试接口,而不是依赖于用于生成报告的实际类(嘎嘎嘎嘎)
- 如果
Checker
添加我不关心的其他状态,这将打破