我有一个实现具有自然顺序的链式方法的类,如:
project = proj.new # initialise object
project = project.create # create directories for project
project.populate # populate directories with contents
所以可以运行proj.new.create.populate
我正在努力用minitest
测试这个并且觉得我正在解决这个问题:
class TestProj < Minitest::Test
def project
proj.new(dir = "testdir")
end
def test_create
project.create
assert file.exist?("testdir")
end
def test_populate
project = project.create
assert file.exist?("testdir")
project.populate
# other assertions here
end
end
这看起来很糟糕,因为我们有重复的代码并且正在测试创建两次。我们应该免除test_create
,但是test_populate
正在测试多个东西吗?我们是否应该执行测试顺序并将结果从一个测试保存到下一个测试?我觉得我错过了“正确”的解决方案,但我很难找到它。
如果需要,很高兴提供更具体的代码,但我正在努力简化以找到问题的根源。