这是我的问题。如果我使用ruby命令运行测试,测试全部通过。但是,如果我使用rake测试:函数它们都会失败并出现以下错误。我不确定在使用rake任务时我必须做些什么才能让它们通过,但我非常感谢你提供的任何指导。
#tasks_controller_test.rb
require File.dirname(__FILE__) + '/../test_helper'
class TasksControllerTest < ActionController::TestCase
set_fixture_class :Action => 'Task'
fixtures :Action
setup :initialize_test
test "the truth" do
assert true
end
private
def initialize_test
@user = users :one
sign_in @user
@user.confirm!
@task = Action :one # Here's the line that is throwing the error.
end
end
1) Error:
test_the_truth(TasksControllerTest):
FixtureClassNotFound: No class attached to find.
test/functional/tasks_controller_test.rb:20:in `initialize_test'
答案 0 :(得分:1)
该错误表明Rails无法确定要为测试加载的夹具。
我假设灯具名为Action.yml。 Rails是否接受具有大写字母的夹具文件名?
根据http://apidock.com/rails/ActiveRecord/TestFixtures/ClassMethods/set_fixture_class的文档,set_fixture_class需要一个类名而不是一个字符串。
所以我会尝试:
set_fixture_class :myaction => Task
我将夹具文件重命名为myaction.yml
答案 1 :(得分:0)
这是处理问题的一种非常奇怪的方式。
使用导轨,开箱即用,如果你有固定装置,他们会在每次测试前加载它们。
您无需在控制器测试中明确加载它们。
http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures
默认情况下,Rails会自动加载所有灯具 您的单元和功能测试的test / fixtures文件夹。载入中 涉及三个步骤:
答案 2 :(得分:0)
看起来没有人能够解决这个问题。所以我现在只是关闭它。也许我会切换到Factory_Girl或Machinist。