これが私のモデルの関連セクションです:
belongs_to :cart
belongs_to :product
validate :quantity, :more_than_stock, :message => "more than in stock is reserved."
def more_than_stock
errors.add(:quantity, "should be less than in stock") if self.quantity > self.product.stock
end
私はこの行でエラーを出し続けています:メソッドerrors.add(:quantity, "should be less than in stock") if self.quantity > self.product.stock
に関して.stock
。
私が得続けるエラーは次のとおりです:1) Error:
test_product_id_must_be_a_number(CartRowTest):
NoMethodError: undefined method 'stock' for nil:NilClass
私のテストで。
.stock
私のテストスイートは製品のメソッドを知らないようです。
ただし、これが私の製品工場です。
factory :product do
name 'Cholecap - 100mg'
limit 3
stock 10
end
と私のcart_rowファクトリー:
factory :cart_row do
product
cart
quantity 3
end
エラーをスローするユニットテストの関連部分は次のとおりです。
def setup
@cart_row = FactoryGirl.create(:cart_row)
end
test "product_id must not be blank" do
@cart_row.product_id = " "
assert !@cart_row.valid?
end
test "product_id must be a number" do
@cart_row.product_id = '234'
assert !@cart_row.valid?
end
テストスイートに.stockメソッドについて知らせるために何をする必要がありますか?