Minitest - Rails 4中的测试类

时间:2013-10-01 21:25:55

标签: ruby-on-rails-4 minitest

我正在尝试在新的Rails 4安装中使用Minitest。我的理解是,如果我有一个不从ActiveRecord继承的类,那么我应该能够使用Minitest本身,而不需要Rails集成:

#test/models/blog.rb
require "minitest/autorun"
class Blog < Minitest::Unit::TestCase

def setup
  @b = Blog.new
end

def test_entries
  assert_empty "message", @b.entries
end

#app/models/blog.rb
class Blog
  attr_reader :entries
  def initialize
   @entries = []
  end

我使用ruby test/models/blog.rb运行测试。 我的问题来自于安装方法。如果我没有为我的博客添加条目,则测试将失败,并显示设置中的参数数量错误。如果我在设置消息@b = Blog.new entries: "Twilight"中包含一个条目,则我的测试在test_entries方法中失败,因为条目是未定义的方法。

1 个答案:

答案 0 :(得分:3)

你有几个问题。首先,您不需要“test_helper”,这意味着在运行此测试时没有加载rails,这意味着未加载用于解析缺失常量的机制rails。您将需要需要帮助程序或直接需要博客​​文件。其次,您正在覆盖要通过测试测试的常量,这就是您收到令人困惑的消息的原因。将测试类命名为BlogTest,以避免这种情况。

这是我认为你想要做的事情:

require "minitest/autorun"
require "models/blog" # Assuming "app" is in your load path when running the test
#require "test_helper" # Or require this instead if you need to use DB

class BlogTest < Minitest::Unit::TestCase

  def setup
    @b = Blog.new
  end

  def test_entries
    assert_empty @b.entries, "Blog entries should be empty"
  end

end