簡體   English   中英

Rails 3應用程序正常運行,集成測試失敗:如何解決Cookie問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM