Вы вставили действие создания вместо действия обновления.Кроме того, вы пытаетесь протестировать действие обновления с помощью запроса get ... оно должно быть с запросом пут, если вы следуете соглашениям.
Если, например, действие обновления выполнено ... выбудет тестировать более или менее, как:
describe CategoriesController do
let(:category) { mock_model(Category).as_null_object }
describe "PUT update" do
before do
Category.should_receive(:find).with(5).and_return(category)
end
context "when a category updates succesfully" do
before do
category.stub(:update_attributes).and_return(true)
end
it "redirects to the categories page" do
put :update, :id => 5, :category => { :some_val => 4 }
response.should redirect_to(categories_path)
end
it "sets the flash message" do
put :update, :id => 5, :category => { :some_val => 4 }
flash[:notice].should eq("Category was succesfully updated")
end
end
context "when a category does not update successfully" do
before do
category.stub(:update_attributes).and_return(false)
end
it "sets the flash message"
it "redirects to the categories page"
# etc etc
end
end
end
Чтобы добраться до этой точки (имеется в виду добавление фиктивных моделей, заглушки, что у вас есть), вы обычно начинаете «свежее», так сказать, и продвигаетесь вверхСтиль TDD.Надеюсь, это поможет