如何使自动测试正确地改变单个模型和多个控制器

时间:2008-11-08 03:32:33

标签: ruby-on-rails tdd

举个例子,如果我有Book模型和BooksController自动测试,ZenTest套件的一部分将获取两者之间的关联并加载test/unit/book_test.rb和{ {1}}进入测试套件。另一方面,如果我有test/functional/books_controller_test.rb模型和Story,则自动测试拒绝“注意到”StoriesController

3 个答案:

答案 0 :(得分:0)

不幸的是,ZenTest不是rails插件,因此它不会受益于ActiveSupport的复数方法。因此,它使用简单的正则表达式来匹配文件名。查看ZenTest / autotest / rails.rb以查看Rails现有映射的列表。

最后,您有两个选择:

  • (monkey)修补你自己的映射规则
  • 忘记多元化

希望这有帮助!

答案 1 :(得分:0)

您可以覆盖.autotest文件中的映射。在您的主目录或项目的根目录中。您可以require 'active_support'获取String#pluralizeString#singularize

借用lib/autotest/rails_rspec.rb中的rspec-rails插件中的代码,它似乎已经使用ActiveSupport进行单数/复数魔术。不过,你可能需要从那里拉出RSpec特定的假设。

答案 2 :(得分:0)

我终于弄清楚发生了什么,毕竟它与没有什么与复数化有关。

它有所有与“ stories ”这个词有关,它可以是其中一个测试库的特殊目录(RSpec?Cucumber?我忘了)所以它被列在我的〜/ .autotest配置文件中作为例外!我不确定我什么时候剪切并将片段粘贴到文件中,可能是在我第一次开始使用ZenTest并且不知道我在做什么的时候。

Autotest.add_hook :initialize do |at|
  %w{... stories ...}.each {|exception|at.add_exception(exception)}
end

添加尾部斜杠(“stories /”)恢复了测试并从前额中删除了砖痕。

所以我想从中吸取的教训是:在调试时检查杂散配置文件。