我正在使用stub_request
存取http请求。这个http请求基本上是一个松弛的通知,它包含一些随机字符串(例如时间戳)。
所以,我不能只重复使用代码片段rspec
吐出来,因为每次执行时身体都不同。有没有可能用例如模式存根请求,或者我被困在例如Slack#ping
?
干的代码,jic:
突变
class MyMutation < Mutations::Command
def run
slack.ping "#{rand (1..1000)}"
end
end
规范
describe MyMutation do
# ??? stub_request ???
it 'succeeded' do
expect(MyMutation.new.run.outcome).to be_success
end
end
感谢。
UPD 存根请求:
stub_request(:post, "https://hooks.slack.com/services/SECRETS").
with(:body => {"payload"=>"{SLACK_RELATED_PROPS,\"text\":\"MY_RANDOM_HERE\"}"},
:headers => {'Accept'=>'*/*', MORE_HEADERS}).
to_return(:status => 200, :body => "", :headers => {})
答案 0 :(得分:5)
您需要使用partial hash matching:
stub_request(:post, "https://hooks.slack.com/services/SECRETS").
with(:body => hash_including("payload"=>"{SLACK_RELATED_PROPS}"),
:headers => {'Accept'=>'*/*', MORE_HEADERS}).
to_return(:status => 200, :body => "", :headers => {})
我还建议提供SLACK_RELATED_PROPS
作为哈希,而不是json编码的字符串。只需从那里选择一些您真正关心的值,并删除其他所有值,例如随机生成的值。
您可以在request
对象上查看文档中的更多功能,例如regex matching甚至dynamic evaluating。