使用Rails进行敏捷开发4,第10章 - 游戏时间部分:误解的代码

时间:2016-06-09 11:49:47

标签: ruby-on-rails unit-testing ruby-on-rails-4

我在使用Rails 4的敏捷开发第10章的游戏时间部分的建议解决方案中理解一行代码时遇到了问题。

对于练习,我应该创建一个单元测试,添加重复的产品。 单元测试的逻辑如下:在单元测试中,我应该创建一个购物车,将两个相同的项目(已经声明为夹具)添加到购物车,保存项目然后对我期望的数字进行断言项目和总价格应该是。以下是建议的解决方案。问题是我不理解这一行及其功能: “assert_equal 2,cart.line_items [0] .quantity” 。请参阅下面的完整测试。提前谢谢!

test "add duplicate product" do
        cart = Cart.create
        ruby_book = products(:ruby)
        cart.add_product(ruby_book.id).save!
        cart.add_product(ruby_book.id).save!
        assert_equal 2*book_one.price, cart.total_price
        assert_equal 1, cart.line_items.size
        assert_equal 2, cart.line_items[0].quantity
    end

1 个答案:

答案 0 :(得分:2)

我评论了你的代码:

test "add duplicate product" do
  cart = Cart.create

  ruby_book = products(:ruby)

  cart.add_product(ruby_book.id).save!
  cart.add_product(ruby_book.id).save!

  # Checking that the total price of the cart equals the price of the book * the number of books.
  assert_equal 2 * book_one.price, cart.total_price

  # Only one item in the cart.
  assert_equal 1, cart.line_items.size

  # Only one item in the cart, but the quantity of the item is 2, since we added the same book twice.
  assert_equal 2, cart.line_items[0].quantity
end