Ste*_*fan 3 ruby testing integration-testing rspec
我有一个接收复杂参数(HTML字符串)的函数.我想检查有关此字符串的多个条件,即:
receiver.should_receive(:post_data).with(json_content).with(id_matching(5))
Run Code Online (Sandbox Code Playgroud)
多个with参数不起作用,任何替代方案?如果可以以某种方式制作复合匹配器,我很乐意定义自定义匹配器.
显然,我可以多次运行相同的测试并测试结果的不同内容,但这是一个需要几秒钟才能运行的集成测试,所以我不想让它更慢.
谢谢
编辑:
在撰写本文时,接受的答案(使用带有自定义描述的自定义匹配器)似乎是最佳选择.然而,它并不完美,理想情况下with会支持"这是预期类型的项目,但不是我们预期的那个"的概念,而不是纯二进制匹配.
也许你甚至不需要自定义匹配器,块形式就足够了.
receiver.should_receive(:post_data) do |*args|
json_content = args.first
json_content.should_not be_empty
json_content.should include "some string"
end
Run Code Online (Sandbox Code Playgroud)
请参阅RSpec Mocks文档,任意处理部分