Я пишу тесты для своей заявки. Я написал немало тестов, и они отлично работали. Тем не менее, два моих теста продолжают терпеть неудачу, и я не уверен, почему это так. Первый тест - неудачное редактирование формы. Тест приведен нижеПроблемы с тестированием в рельсах
test "unsuccessfull editing of the scoreboard" do
log_in_as(@user)
get edit_scoreboard_path(@scoreboard)
assert_template 'scoreboards/edit' (doesn't work)
patch scoreboard_path(@scoreboard), scoreboard: { name_of_scoreboard: "a"* 51,
name_of_organization: "b"*60,
name_of_activity: "c"*60 }
assert_template 'scoreboard/edit' (doesn't work)
end
ошибка, связанная с этим тестом приводится ниже.
ScoreboardEditTest#test_unsuccessfull_editing_of_the_scoreboard [/home/ubuntu/workspace/test/integration/scoreboard_edit_test.rb:13]:
expecting <"scoreboards/edit"> but rendering with <[]>
Контроллер для следующего испытания также приведен ниже.
def update
@scoreboard = Scoreboard.find(params[:id])
if @scoreboard.update_attributes(scoreboard_params)
redirect_to @scoreboard
flash[:success] = "Updated Successfully"
else
render 'edit'
end
end
После того, как вы получите edit_scoreboard_path, должен появиться шаблон табло редактирования. Я не совсем уверен, почему это дает мне ошибку. У меня есть то же самое с моделью пользователя и его работа отлично. Я думаю, что у меня что-то не хватает, я понимаю, что это работает.
Второй тест - действительное создание табло. Тест приведен ниже.
test "valid creation of the scoreboard with passing validations" do
log_in_as(@user)
get new_scoreboard_path
assert_difference 'Scoreboard.count', 1 do
post scoreboards_path, scoreboard: {name_of_scoreboard: "abc",
name_of_organization: "def",
name_of_activity: "ghi" }
end
assert_redirected_to scoreboard_path(@scoreboard) (doesn't work)
assert_equal 'Scoreboard created successfully', flash[:success]
end
Он перенаправляет неверный идентификатор табло. В приборах у меня установлен идентификатор 1. Сообщение об ошибке приведено ниже.
Expected response to be a redirect to <http://www.example.com/scoreboards/1> but was a redirect to <http://www.example.com/scoreboards/941832920>.
Я не уверен, что это значит. Как я уже упоминал, у меня есть идентификатор, установленный в светильниках. Я даже вручную установил идентификатор «941832920». Это все еще дало мне ошибку. Не знаю, почему это делается.
Формат выше работал. Кажется, я знаю, почему это сработало, но я не совсем уверен. Кроме того, любая подсказка, почему первый тест терпит неудачу. –
Это для тех, у кого такая же проблема. Первый тест завершился неудачно из-за фильтра before_action. Я должен был быть правильным пользователем, чтобы иметь возможность редактировать табло. Правильный пользователь - пользователь, связанный с табло. Я создал ассоциацию файла my fixtures (.yml). Поэтому @user был правильным пользователем, и я перенаправлялся на правильную страницу –