Я пытаюсь улучшить свое тестовое покрытие (только что установил simplecov) и было довольно приятно уже иметь хорошее покрытие.Тем не менее, я не ловил некоторые режимы сбоев в своих тестах, но я не знаю, как принудительно вызвать сбой, например, сохранения при создании объекта в Rails (5.2, если это имеет значение).Любые указатели о том, как заставить и поймать сбой методов save
или update_attributes
?
Мои основные тесты работают нормально.Я просто не знаю, как заставить код выполнять эти ветки в тесте!
Соответствующий метод контроллера:
def create
@project = current_user.projects.build(project_params)
if @project.save
flash[:notice] = "Project created!"
redirect_to user_path(current_user)
else
flash[:alert] = "There was an error. Your project was not created."
render 'new'
end
end
Первая ветвь этого теста (if @project.save
)провереноВторой (else
) нет.Тест, который я использую для проверки успеха, выглядит следующим образом:
sign_in @user
assert_difference 'Project.count', 1 do
post projects_path, params: {project: {name: @new_project_name, user_id: @user.id}}
end
assert_redirected_to user_path(@user)
Что мне действительно нужно, так это то, где я могу assert_no_difference
успешно!