line_items.yml:
one:
product_id: 1
cart_id: 1
quantity: 1
carts.yml:
one: {}
product.rb:
has_many :line_items
cart.rb:
has_many :line_items, dependent: :destroy
line_item.rb:
belongs_to :product
belongs_to :cart
line_item_controller.rb:
def destroy
@line_item = LineItem.find(params[:id])
@cart = @line_item.cart
@line_item.destroy
respond_to do |format|
format.html { redirect_to @cart }
format.json { head :no_content }
end
end
line_item_controller_test.rb:
setup do
@line_item = line_items(:one)
end
test "should destroy line_item" do
@cart = @line_item.cart
assert_difference('LineItem.count', -1) do
delete :destroy, id: @line_item
end
assert_redirected_to @cart
end
rake test:functionals
- Error:
test_should_destroy_line_item(LineItemsControllerTest):
ActionController::ActionControllerError: Cannot redirect to nil!
@cart in line_items_controller.rb may be nil, when executing functional
test.
Accessing by browser “line_items/20/ post:delete”, correctly redirected
show cart that contain line_items(id:20)
why is functional test error?