コントローラーの 1 つで create メソッドをテストする機能テストを作成しようとしています。私の人生では、なぜこれが失敗しているのか理解できません。1 回失敗し、エラーはゼロです。
1) Failure:
test_should_create_order(OrdersControllerTest) [/Users/user/rails_work/depot/test/functional/orders_controller_test.rb:38]:
"Order.count" didn't change by 1.
<3> expected but was
<2>.
したがって、これは私の機能テストが注文を作成できなかったことを意味していると確信しています。これが私のテストです:
setup do
@order = orders(:one)
end
test "should create order" do
assert_difference('Order.count') do
post :create, order: @order.attributes.slice(Order.accessible_attributes)
end
assert_redirected_to store_url
end
私の注文フィクスチャ:
one:
name: Dave Thomas
address: MyText
email: dave@example.org
pay_type: Check
そして私の Order#create コントローラー:
def create
@order = Order.new(params[:order])
@order.add_line_items_from_cart(current_cart)
respond_to do |format|
if @order.save
Cart.destroy(session[:cart_id])
session[:cart_id] = nil
format.html { redirect_to store_url, notice: 'Thank you for your order' }
format.json { render json: @order, status: :created, location: @order }
else
@cart = current_cart
format.html { render action: "new" }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
ここで、機能テストのセットアップ方法を次のように変更するとします。
@order = Order.create(orders(:one))
それ以外の:
@order = orders(:one)
エラーは消えますが、次のエラーが約 8 個発生します。
NoMethodError: undefined method `stringify_keys' for #<Order:0x007f8c62dbb960>
誰かがこの機能テストを修正するのを手伝ってくれるなら、私はそれを感謝します. あらゆる入力を歓迎します。