【发布时间】:2015-10-15 07:09:53
【问题描述】:
我的规范似乎没有正常运行,或者我的代码没有。
这是我的测试:
describe 'GET #show' do
before(:each) do
@os = FactoryGirl.create :deployer_os
get :os
end
it 'returns all operating systems' do
os_response = json_response
expect(os_response).to eql @os
end
it { should respond_with 200 }
end
工厂:
FactoryGirl.define do
factory :deployer_os, :class => 'DeployerOs' do
platform 'darwin'
version '10.10'
description 'Yosemite'
end
end
结果:
Failure/Error: expect(os_response).to eql @os
expected: #<DeployerOs id: 120, platform: "darwin", version: "10.10", description: "Yosemite", created_at: "2015-10-15 07:03:44", updated_at: "2015-10-15 07:03:44">
got: {:deployer=>[{:id=>120, :platform=>"darwin", :version=>"10.10", :description=>"Yosemite", :created_at=>"2015-10-15T07:03:44.642Z", :updated_at=>"2015-10-15T07:03:44.642Z"}]}
(compared using eql?)
Diff:
...
我不确定如何解决这个问题?我得到了我想要的结果,但我认为我的测试编写不正确。
更新
像这样修改我的测试是可行的,但我想知道这是否是完成此任务的最佳方法?
describe 'GET #show' do
before(:each) do
@os = JSON.parse((FactoryGirl.create :deployer_os).to_json, symbolize_names: true)
get :os
end
it 'returns all operating systems' do
os_response = json_response
expect(os_response).to eql @os
end
it { should respond_with 200 }
end
【问题讨论】:
标签: ruby-on-rails ruby json rspec