我有一个 Rspec 测试,它发出一个 POST 请求并发送一个标头,因为需要身份验证:
it 'creates a client for an organization if none exists' do
VCR.use_cassette('create_client') do
post "/organizations/#{@organization.id}/clients", nil, { 'TOKEN' => @token }
expect(last_response.status).to be(201)
expect(json_response).to be_a(Hash)
expect(json_response["organization_id"]).to eq(@organization.id)
expect(json_response.keys).to include('auth_token')
end
expect(@organization.client).to_not be_nil
end
当我在本地机器上运行测试时,这会顺利通过,但会在 CI 服务器上失败(在本例中为 Codeship):
Failure/Error: post "/organizations/#{@organization.id}/clients", nil, { 'TOKEN' => @token }
MyModule::MyClass::Errors::InvalidOptionError:
bad URI(is not URI?):
当我从发布请求中删除标头部分时,测试显然会失败,因为需要令牌标头,但是发布请求将通过而没有错误。
任何想法为什么会发生这种情况?我会很感激任何意见。