У меня есть следующие тесты Rspec, которые проверяют, может ли пользователь успешно обновить поиск мусора.Я знаю, что сайт позволит пользователю делать это, но моя проблема в том, что мои тесты не фиксируют это.Каждый раз, когда я запускаю rspec, все приведенные ниже тесты не проходят.Я надеюсь, что есть только одна простая вещь, которую я забыл вставить туда, но мои глаза омрачены, когда весь код работает вместе.Когда вы смотрите на эти тесты, что-то кажется вам неправильным?
describe "PUT 'update'"
before(:each) do
@hunt = FactoryGirl.create(:hunt)
end
....
describe "as an admin user" do
before(:each) do
admin = FactoryGirl.create(:user, :email => "admin@example.com", :admin => true)
test_sign_in(admin)
end
....
describe "success" do
before(:each) do
@attr = { :name => "New Hunt" }
end
it "returns http success" do
get 'edit', :id => @hunt
response.should be_success
end
it "should change the hunt's name" do
put :update, :id => @hunt, :name => @attr
@hunt.reload
@hunt.name.should == @attr[:name]
end
it "should redirect to the hunt show page" do
put :update, :id => @hunt
response.should redirect_to(@hunt)
end
it "should have a flash message" do
put :update, :id => @hunt, :user => @attr
flash[:success].should =~ /updated/
end
end
...
end
Вот код моего контроллера.
def edit
@hunt = Hunt.find(params[:id])
@title = "Edit hunt"
end
def update
@hunt = Hunt.find(params[:id])
if @hunt.update_attributes(params[:hunt])
flash[:success] = "Hunt updated."
redirect_to hunts_path
else
@title = "Edit Hunt"
render 'edit'
end
end
А вот обратная связь, которую я получаю из Rspec.Это все по всем направлениям, но я надеюсь, что это вызвано одной проблемой, а не четырьмя отдельными.
1) HuntsController PUT 'update' as an admin user failure should render the 'edit' page
Failure/Error: response.should render_template('edit')
expecting <"edit"> but rendering with <"">
# ./spec/controllers/hunts_controller_spec.rb:220:in `block (5 levels) in <top (required)>'
2) HuntsController PUT 'update' as an admin user failure should have the right title
Failure/Error: response.should have_selector("title", :content => "Edit hunt")
expected following output to contain a <title>Edit hunt</title> tag:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>You are being <a href="http://test.host/hunts">redirected</a>.</body></html>
# ./spec/controllers/hunts_controller_spec.rb:226:in `block (5 levels) in <top (required)>'
3) HuntsController PUT 'update' as an admin user success should change the hunt's name
Failure/Error: @hunt.name.should == @attr[:name]
expected: "New Hunt"
got: "Hunt 9" (using ==)
# ./spec/controllers/hunts_controller_spec.rb:244:in `block (5 levels) in <top (required)>'
4) HuntsController PUT 'update' as an admin user success should redirect to the hunt show page
Failure/Error: response.should redirect_to(@hunt)
Expected response to be a redirect to <http://test.host/hunts/649> but was a redirect to <http://test.host/hunts>
# ./spec/controllers/hunts_controller_spec.rb:249:in `block (5 levels) in <top (required)>'