预期的响应是 <:redirect>,但是是 <200>
我的测试有:
describe "Link POST #create" do
context "with valid attributes" do
it "creates a new link" do
expect{
post :create, link: FactoryGirl.create(:link, :group => @group)
}.to change(Link,:count).by(1)
end
it "redirects to the new link" do
post :create, link: FactoryGirl.create(:link, :group => @group)
# response.should redirect_to @link # Link.unscoped.last
response.should redirect_to Link.unscoped.last # render_template :show
end
end
第一个测试通过,但第二个测试失败。
我的代码是:
def create
@link = Link.new(params[:link])
respond_to do |format|
if @link.save
flash[:notice] = 'Link was successfully created.'
format.html { redirect_to(@link) }
format.xml { render :xml => @link, :status => :created, :location => @link }
else
@selected_group = params[:group_id]
format.html { render :action => "new" }
format.xml { render :xml => @link.errors, :status => :unprocessable_entity }
end
end
end
我已尝试重定向和呈现,但无法通过第二个测试。
最佳答案
这里有一些应该让它工作的东西:
describe "Link POST #create" do
context "with valid attributes" do
def do_post( format = 'html' )
attributes = FactoryGirl.build(:link).attributes.merge( :group_id => @group.id )
post :create, :link => attributes, :format => 'html'
end
it "creates a new link" do
expect{
do_post
}.to change(Link,:count).by(1)
end
it "redirects to the new link" do
do_post
response.should redirect_to( assigns[:link] )
end
end
第一个规范之所以有效,是因为您正在调用 FactoryGirl.create,因此从 Controller 中创建了一条记录,但很可能是 Controller 调用不起作用。
关于ruby-on-rails - rails rspec -(第二次测试)预期响应为 < :redirect>, 但为 <200>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966193/