Я пытаюсь написать тест rspec для моего действия уничтожения моего user_stocks_controller
, но я получаю ошибку:
UserStocksController DELETE #destroy удаляет акции Отказ / Ошибка:
удалить: уничтожить, параметры: {id: user_stock.id}
ActionController :: UrlGenerationError: Нет подходящих маршрутов
{: action => "destroy",: controller => "user_stocks",: id => nil}
Я прочитал, что проблема существует, потому что я не дал идентификатор для акций. Я пытался изменить это по-другому, но мои идеи были неверны.
Вот моя спецификация:
let(:user) { User.new(email: 'test@example.com', password: 'password') }
before do
sign_in(user)
end
describe 'DELETE #destroy' do
let(:stock) { Stock.new_from_lookup('GS') }
let(:user_stock) { UserStock.create(user: user.id, stock: stock) }
it 'deletes stock' do
expect do
delete :destroy, params: { id: user_stock.id }
end.to change(UserStock, :count).by(-1)
expect(response).to have_http_status(redirect)
expect(flash[:notice]).to eq 'Stock successfully removed'
end
end
Уничтожить метод в user_stocks_controller:
def destroy
stock = Stock.find(params[:id])
@user_stock = UserStock.where(user_id: current_user.id, stock_id: stock.id).first
@user_stock.destroy!
flash[:notice] = 'Stock successfully removed'
redirect_to my_portfolio_path
end
Почему мои маршруты не определяются, даже если для него установлено id
?