在为几个项目使用 RSpec 之后,我正在尝试 minitest/unit。到目前为止我很喜欢它,但我想念使用描述/上下文块以合乎逻辑的方式对我的测试/规范进行分组。
我知道 minitest/spec 提供了这个功能,但我喜欢 minitest/unit 感觉更接近准系统 Ruby。
是否有任何 gem 为 minitest/unit 提供描述/上下文支持?或者,我应该只在 minitest/unit 中处理我冗长的、杂乱无章的测试文件吗?
在为几个项目使用 RSpec 之后,我正在尝试 minitest/unit。到目前为止我很喜欢它,但我想念使用描述/上下文块以合乎逻辑的方式对我的测试/规范进行分组。
我知道 minitest/spec 提供了这个功能,但我喜欢 minitest/unit 感觉更接近准系统 Ruby。
是否有任何 gem 为 minitest/unit 提供描述/上下文支持?或者,我应该只在 minitest/unit 中处理我冗长的、杂乱无章的测试文件吗?
我知道有几个人从 RSpec 来到 minitest 为同一个问题苦苦挣扎。他们喜欢使用描述/上下文块进行嵌套的能力,并希望继续进行 minitest。有几种解决方案:
context
块。但是您可以轻松地describe
在它的位置使用,并且一切都按您的预期工作。这是我的测试文件如何组织的示例:
test/
models/
user/
authentication_test.rb
email_test.rb
reservation_test.rb
user_test.rb
username_test.rb
无论我使用的是规范 DSL 还是 xUnit 样式,我都使用这种结构。使用规范 DSL 时,我在描述块中指定我正在测试的内容,如下所示:
require "minitest_helper"
describe User, :authentications do
before do
# ...
您还可以将多个类放入一个测试文件中:
module PizzaTest
class Isolation < ActiveSupport::TestCase
test "is awesome by default" do
assert Pizza.new.awesome?
end
end
class Integration < ActiveSupport::TestCase
fixtures :all
test "is awesome too" do
pizzas('one-with-everything').awesome?
end
end
end
甚至嵌套测试类:
class PizzaTest < ActiveSupport::TestCase
test "is awesome by default" do
assert Pizza.new.awesome?
end
class Integration < ActiveSupport::TestCase
fixtures :all
test "is awesome too" do
assert pizzas('one-with-everything').awesome?
end
end
end
我更喜欢这种方式(只有一点点),但我认为它更容易遵循:
class ConventionalNameTest < ActiveSupport::TestCase
class ContextTest < ConventionalNameTest
# so much stuff...
end
class AnotherContextTest < ConventionalNameTest
# and some more...
end