Я использую rspec + FactoryGirl для тестирования своего приложения.rspec тест для уничтожения, если пользователь не существует
У меня есть следующий тест
context "user cannot be destroyed" do
before(:each) do
@user = FactoryGirl.create :user
delete :destroy, {id: 1}, format: :json
end
it "render the json error when the user is not destroyed" do
user_response = JSON(response.body, symbolize_names: true)
expect(user_response[:errors][:message]).to include "User cannot be destroyed"
end
it {should respond_with 422}
end
Когда я запускаю тест, я получаю ошибку Couldn't find User with 'id'=1
дважды. Если я изменю идентификатор {id: @user.id}
, тест не пройдет, и я получу следующие ошибки.
undefined method `[]' for nil:NilClass
и
Expected response to be a 422, but was 204
Я тестирование кода
def destroy
user = User.find(params[:id])
if user.destroy
render json: {success: {:message => "User destroyed"} }, status: 204
else
render json: {errors: {:message => "User cannot be destroyed"} }, status: 422
end
end
Итак, у меня есть два вопроса:
- Как я могу это исправить?
- Необходимо проверить, был ли пользователь уничтожен? (если user.destroy ...)
Если второй вопрос неверен, я думаю, что моя жизнь будет проще.
Это решение будет только для прохождения теста? – rogelio
Возможно, немного поздно, но тест проходит, когда я это делаю. Благодаря! – rogelio
Добро пожаловать, рад, что это помогло! –