我正在尝试在新的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
方法中失败,因为条目是未定义的方法。
答案 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