RSpec和FactoryGirl对表演动作的解释
刚开始与RSpec和Factory Girl一起学习测试,并且遇到了这个测试RSpec和FactoryGirl对表演动作的解释,rspec,factory-bot,Rspec,Factory Bot,刚开始与RSpec和Factory Girl一起学习测试,并且遇到了这个测试 describe "#show" do it "render the show template" do get :show, id: FactoryGirl.create(:opinion) expect(response).to render_template :show end end 要呈现show页面,我知道它需要ID。
describe "#show" do
it "render the show template" do
get :show, id: FactoryGirl.create(:opinion)
expect(response).to render_template :show
end
end
要呈现show页面,我知道它需要ID。我只想了解这一行的含义ID:FactoryGirl.create(:ointion)
现在我想它的意思是“获取FactoryGirl正在创建的意见对象的ID”,但我想确定一下
此外,我只是想知道是否有其他方法可以使用其他语法编写相同的测试
get :show, id: FactoryGirl.create(:opinion)
在这里,您正在发出一个GET
请求,并将:id
参数与之一起传递,以告诉它显示特定意见的页面
id: FactoryGirl.create(:opinion)
这是一个参数
,它是发出/show
请求所必需的,因此您在发出请求时传递它。否则测试就会失败。在这里,您正在传递意见
对象,Rails将为您检索id
。或者,您可以发送id
本身,而不是意见
对象。因此,这也会起作用:
get :show, id: FactoryGirl.create(:opinion).id
某种程度上,更干净的方法是:
首先定义意见
对象:
let(:test_opinion) { FactoryGirl.create(:opinion) }
然后,您将在稍后的测试中使用test\u opinion
对象或其id
:
describe 'GET #show' do
context "existing opinion" do
it 'responds with success' do
get :show, id: test_opinion.id
expect(response.status).to eq(200)
expect(response).to render_template :show
end
end
end
您还可以传递请求所需的更多params
,以正确呈现模板
e、 g.如果需要,您可以发送更多逗号分隔的参数
:
get :show, format: :json, id: FactoryGirl.create(:opinion)