RSpec让我们来!相当于 ActiveSupport::TestCase
RSpec's let! equivalent in ActiveSupport::TestCase
在 RSpec 中,您可以使用 let!(:user) { User.create }
预先加载 :user
变量,以便在进入测试用例之前创建它。 ActiveSupport::TestCase
中是否有等效方法?
由于 TestCase
中的测试基本上是 ruby 类,您始终可以在 setup
方法中为您的测试定义实例变量(这是执行的第一件事在测试中):
UserTest < ActiveSupport::TestCase
def setup
@user = User.create
end
test 'my user test' do
assert_not @user.nil?
end
end
这里是你如何做到的(它不是万无一失的,需要在拆卸时重置哈希):
class ActiveSupport::TestCase
parallelize(workers: :number_of_processors)
def self.let!(name, &block)
@@lets ||= {}
@@lets[name] = block.call
end
def method_missing(name, *args, &block)
super if args.any? || block
@@lets.fetch(name) { super }
end
def respond_to_missing(name, include_private = false)
@@lets.has_key?(name) || super
end
def methods
super + @@lets.keys
end
end
在 RSpec 中,您可以使用 let!(:user) { User.create }
预先加载 :user
变量,以便在进入测试用例之前创建它。 ActiveSupport::TestCase
中是否有等效方法?
由于 TestCase
中的测试基本上是 ruby 类,您始终可以在 setup
方法中为您的测试定义实例变量(这是执行的第一件事在测试中):
UserTest < ActiveSupport::TestCase
def setup
@user = User.create
end
test 'my user test' do
assert_not @user.nil?
end
end
这里是你如何做到的(它不是万无一失的,需要在拆卸时重置哈希):
class ActiveSupport::TestCase
parallelize(workers: :number_of_processors)
def self.let!(name, &block)
@@lets ||= {}
@@lets[name] = block.call
end
def method_missing(name, *args, &block)
super if args.any? || block
@@lets.fetch(name) { super }
end
def respond_to_missing(name, include_private = false)
@@lets.has_key?(name) || super
end
def methods
super + @@lets.keys
end
end