【发布时间】:2019-12-05 15:02:45
【问题描述】:
我编写了一个发出 HTTP GET 请求的函数(截断和简化)。
# get_request.rb
require "http"
def get_request
HTTP.get("<https://github.com>")
end
我已经为请求编写了一个测试。
require "request"
RSpec.describe "#get_request" do
it "makes a successful GET request" do
# GIVEN
http_response = double("http", body: "Hello world!")
# WHEN
response = get_request
# THEN
expect(HTTP).to receive(:get).with("<https://github.com>").and_return(http_response)
expect(response.body).to eq("Hello world!")
end
end
但是,测试因比较失败而失败。
$ bundle exec rspec
F
Failures:
1) #get_request makes a successful GET request
Failure/Error: expect(response.body).to eq("Hello world!")
expected: "Hello world!"
got: #<HTTP::Response::Body:3fe63e519550 @streaming=false>
(compared using ==)
Diff:
@@ -1,2 +1,2 @@
-"Hello world!"
+#<HTTP::Response::Body:3fe63e519550 @streaming=false>
# ./spec/request_spec.rb:13:in `block (2 levels) in <top (required)>'
Finished in 0.32713 seconds (files took 0.25261 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/request_spec.rb:4 # #get_request makes a successful GET request
为什么response.body 等于<HTTP::Response::Body:3fe63e519550 @streaming=false> 哈希而不是我预期的"Hello world!" 字符串?如何让测试通过?
【问题讨论】:
标签: ruby unit-testing rspec httprequest