ruby-on-rails - Minitest:Ruby on Rails 中的测试产生的断言比我预期的要多

标签 ruby-on-rails ruby unit-testing minitest

我开始使用 Minitest 在 Rails 上进行单元测试。

这是我的第一个产品模型测试用例。

require "test_helper"

class ProductTest < ActiveSupport::TestCase
  test "product price must be positive" do
    product = Product.new(title: "My Book Title",
                          description: "yyy",
                          image_url: "zzz.jpg")
    product.price = -1
    assert product.invalid?, "negative price of a product must be invalid."
    assert product.errors.has_key?(:price), "an invalid product must have an error"

    product.price = 0
    assert product.invalid?, "negative price of a product must be invalid."
    assert product.errors.has_key?(:price), "an invalid product must have an error"

    product.price = 1
    assert product.valid?, "positive price of a product must be valid."
    assert_empty product.errors, "a valid product must have no error"
  end
end

我为此测试用例添加了6 个断言。 但是,如果我运行此测试用例,控制台输出会生成 7 个断言 run。

$ rake test test/models/product_test.rb 


[DEPRECATION] Ahoy subscribers are deprecated
Run options: --seed 31334

# Running:

.

Finished in 0.260717s, 3.8356 runs/s, 23.0134 assertions/s.

1 runs, 7 assertions, 0 failures, 0 errors, 0 skips

有谁可以帮我找出断言数量不匹配的原因吗?

提前致谢。

最佳答案

查看 the source , assert_empty 确实以一个断言的价格做出了两个断言。

def assert_empty obj, msg = nil
  msg = message(msg) { "Expected #{mu_pp(obj)} to be empty" }
  assert_respond_to obj, :empty?
  assert obj.empty?, msg
end

关于ruby-on-rails - Minitest:Ruby on Rails 中的测试产生的断言比我预期的要多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32005317/

相关文章:

ruby-on-rails - Controller 类在什么时候实例化 Rails 网络应用程序中的 Controller 对象?

ruby-on-rails - 通过 Ruby、Rails 和 'omniauth-google-oauth2' gem 失败的 Google oauth2 访问

Angular 单元测试失败,但不在本地

java - 从使用 to_date 的数据库测试日期并针对 LocalTimeDate 进行测试

ruby-on-rails - 在移动设备上使用替代的Rails布局,但 View 相同

ruby-on-rails - 在 Ruby on Rails 开发中使用 Cucumber 传递 autospec 中的选项

ruby-on-rails - 为什么我不能从我的 Controller 内部访问我的模型中定义的这个方法?

javascript - capybara 与 :js => true causes tests to fail

Ruby 关键字参数说明

ruby - 我如何在 minitest 中模拟一个 block ?