次のようにリクエストスタブを登録しています。
url = "http://www.example.com/1"
stub_request(:get, url).
with(body: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project>\n <id>1</id>\n</project>\n",
headers: {
'Accept' => 'application/xml',
'Content-type' => 'application/xml',
'User-Agent' => 'Ruby',
'X-Trackertoken' => '12345'
}).
to_return(status: 200, body: '', headers: {})
何らかの理由で実行するbundle exec rspec spec
と、リクエストがまだ登録されていないとスペックが失敗します。登録されたスタブはこれです、
stub_request(:get, "http://www.example.com/1").
with(body: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project>\n <id>1</id>\n</project>\n",
headers: {
'Accept' => 'application/xml',
'Content-type' => 'application/xml',
'User-Agent' => 'Ruby',
'X-Trackertoken' => '12345'
})
to_return
パーツが欠落していることに注意してください
ヘッダーを空の文字列に置き換えようとしましたがbody
、リクエストスタブは正しく登録されていますが、空の文字列以外の値を本体から期待しているため、仕様は失敗します。したがって、bodyに値を割り当てることが非常に重要です。
私の仕様では、このメソッドを呼び出しています。
def find(id)
require 'net/http'
http = Net::HTTP.new('www.example.com')
headers = {
"X-TrackerToken" => "12345",
"Accept" => "application/xml",
"Content-type" => "application/xml",
"User-Agent" => "Ruby"
}
parse(http.request(Net::HTTP::Get.new("/#{id}", headers)).body)
end
なぜこれが起こっているのかについてのアイデアはありますか?
ありがとう。