【发布时间】:2017-01-02 10:53:56
【问题描述】:
如何在一个 Ruby Minitest 文件中进行设置会导致另一个 Minitest 文件中出现六个错误?
我什至不知道我会怎么看这个。希望你能帮忙。
我正在编写单元测试(在 Minitest for Ruby,this "to do list" learning project),我的测试通过了。然后,我开始为新文件test_todo_helpers.rb 中的方法编写测试,第一次运行文件的 setup 方法时,我遇到了六个错误。事实证明,这些错误是完全不同的测试脚本test_task.rb 中的错误。当我简单地删除第一个测试文件时,我所有的测试都通过了!注意,我根本没有接触源文件。
这是一个示例错误消息,是六个错误之一(所有这些都是“nil 的未定义方法”)。
1) Error:
TestTask#test_check_description:
NoMethodError: undefined method `check_description' for nil:NilClass
C:/Users/user/Dropbox/_Programming/Ruby/learning_projects/todo/test/test_task.rb:41:in `test_check_description'
在test_todo_helpers.rb 中,我能够将问题缩小到一行,这里是:@store = TaskStore.new('tasks.yml')。在一个测试文件中注释掉该行,另一个测试文件中的所有错误都会神奇地消失!
我完全喜欢WTF?为什么我将 yaml 存储加载到一个测试文件中的实例变量中会导致另一个测试文件中的对象(通常不是 nil)突然变为 nil?
我在想也许我需要做一些teardown?我从不这样做,因为我从来不知道为什么它是必要的。一个文件中的测试会影响另一个文件中的测试吗? (我是初学者。)
这让我觉得这是一个潜在的学习机会,所以我来了。知道发生了什么吗?
【问题讨论】:
-
也许你不能创建两个同名的商店?在开始下一个测试之前,我会尝试删除商店及其 yaml 文件。
标签: ruby unit-testing minitest