Redirect on browser success, but redirect on functional test is error

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

  1. 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?

carts.yml does not create the cart with id=1 that LineItem.find(1)
refers
to.