1

我正在尝试在全新的 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因为条目是一个未定义的方法。

4

1 回答 1

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
于 2013-10-01T22:17:18.053 回答