[英]Rails 3 app works, integration test fails: how to fix cookie issue?
我有一個簡單的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。檢查日志輸出會在響應正文中顯示以下消息:
A secret is required to generate an integrity hash for cookie session data. Use config.secret_token = "some secret phrase of at least 30 characters" in config/initializers/secret_token.rb
當然secret_token.rb
存在並且包含正確格式的密鑰(它是由Rails 3本身生成的。)
那里有人知道如何在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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.