rspec 没有 rails 的迷你模拟服务器
Mini mock server for rspec without rails
我想在 rspec 中测试一个 API 客户端。
我目前正在嘲笑 Typhoeus - 但我想知道是否有更端到端的方式来做到这一点。本质上,我想要的是:
it "makes a connection to the server" do
MockServer.new do |server|
subject.url = server.url
subject.run!
expect(server.last_request.params).to eq({some: "params"})
expect(server.last_request.headers).to include({"X-whatty-what" => "yepyep"})
end
end
也许我可以用 Sinatra 做到这一点,甚至可以直接机架...以前有人做过这样的事情吗?
使用 Webmock 存根请求。
建议对您希望单独发出的每个请求进行存根,以便您准确了解所请求的内容,但您也可以使用与您请求的内容类似的语法。
it "makes a connection to the server" do
stub_request(:any, "www.example.com")
subject.url = "www.example.com"
subject.run!
expect(
a_request(:post, "www.example.com").with(
body: { some: "params" },
headers: { "X-whatty-what" => "yepyep" }
)
).to have_been_made
end
webmock 文档有很多很好的例子,看一看。
我想在 rspec 中测试一个 API 客户端。
我目前正在嘲笑 Typhoeus - 但我想知道是否有更端到端的方式来做到这一点。本质上,我想要的是:
it "makes a connection to the server" do
MockServer.new do |server|
subject.url = server.url
subject.run!
expect(server.last_request.params).to eq({some: "params"})
expect(server.last_request.headers).to include({"X-whatty-what" => "yepyep"})
end
end
也许我可以用 Sinatra 做到这一点,甚至可以直接机架...以前有人做过这样的事情吗?
使用 Webmock 存根请求。
建议对您希望单独发出的每个请求进行存根,以便您准确了解所请求的内容,但您也可以使用与您请求的内容类似的语法。
it "makes a connection to the server" do
stub_request(:any, "www.example.com")
subject.url = "www.example.com"
subject.run!
expect(
a_request(:post, "www.example.com").with(
body: { some: "params" },
headers: { "X-whatty-what" => "yepyep" }
)
).to have_been_made
end
webmock 文档有很多很好的例子,看一看。