Вот что до меня дошло в тесте Rails:контроллеры.
Failure:
StoriesControllerTest#test_adds_a_story [test/controllers/stories_controller_test.rb:42]:
Expected response to be a redirect to <http://www.example.com/stories/980190962> but was a redirect to <http://www.example.com/stories/980190963>.
Expected "http://www.example.com/stories/980190962" to be === "http://www.example.com/stories/980190963".
Кажется, URL истории смещен на единицу.
Это конкретный тест, который не пройден:
assert_redirected_to story_url(@story)
Я пытался изменить то, что должен сказать тест, но это приводит либо к ошибкам, либо к сбоям.
вот тест, который не прошёл:
test "adds a story" do
assert_difference "Story.count" do
post stories_path, params: {
story: {
name: 'test story',
link: 'http://www.test.com/'
}
}
end
assert_redirected_to story_url(@story)
assert_not_nil flash[:notice]
end
а вот действие контроллера
def create
@story = Story.new(story_params)
respond_to do |format|
if @story.save
format.html { redirect_to story_url(@story), notice: "Story was successfully created." }
format.json { render :show, status: :created, location: @story }
else
format.html { render :new, status: :unprocessable_entity }
format.json { render json: @story.errors, status: :unprocessable_entity }
end
end
end
@spickermann, я отредактировал сообщение, включив в него эту информацию.
Откуда берется @story в вашем тесте и как он устанавливается?
в самом начале он делает следующее: ``` setup do @story = Stories(:one) end ``` Это указывает на старую первую историю? Пока я это делаю, я просматриваю, как забронировать, поэтому не понимаю большую часть кода, лол. Спасибо, что прошли через это вместе со мной.





Как вы уже упоминали в комментариях, при использовании
setup do
@story = stories(:one)
end
тогда one присваивается история, созданная приборами, а не история, которая была только что создана во время теста.
Вместо этого я предлагаю изменить ваш тест на:
test "adds a story" do
assert_difference "Story.count" do
post stories_path,
params: { story: { name: 'test story', link: 'http://www.test.com/' } }
end
assert_redirected_to story_url(Story.last)
assert_equal "Story was successfully created.", flash[:notice]
end
Как выглядят действия вашего контроллера и полный тест?