我有一个简单的Rails 3应用程序:没有模型,一个视图和一个控制器,单个index
方法产生静态内容。它工作得很好:当我手动浏览'/'
时,我看到我的静态内容。
然后我添加了一个集成测试:
# myproj/test/integration/routes_test.rb
class RoutesTest < ActionController::IntegrationTest
test 'default_route' do
get '/'
assert_response :success, @response.body
end
end
当通过rake
运行此测试时,它告诉我GET '/'
响应500。检查日志输出将在响应体中显示以下消息:
为cookie会话生成完整性哈希需要一个secret数据。使用配置。Secret_token = "至少30的秘密短语characters"在config/初始化/secret_token.rb 之前当然
有人知道如何在Rails 3中启用集成测试吗?我猜也许我需要设置一些其他配置选项来告诉我的应用程序接受集成测试。secret_token.rb
是存在的,并且包含一个正确格式化的秘密(它是由Rails 3自己生成的)
您需要包含rails生成的文件test_helper.rb
。这包含了允许集成测试所必需的魔力。
在您的测试文件中,在行前加上:
require File.join( File.dirname( __FILE__ ), '../test_helper.rb' )
上面的路径'../test_helper.rb'
应该是相对于包含它的测试文件的。
仅供参考:以上是一个Ruby习惯用法,用于通过相对路径包含文件(如c中的#include "../foo.h"
)。如果您正在使用Ruby 1.9。X时,可以使用更简单的形式:
require_relative '../test_helper.rb'