2010-04-15 61 views
2

黃瓜測試首先在數據庫中創建一個條目並將表單發佈到第二個服務器。第二臺服務器在後臺執行一些處理,然後使用黃瓜測試需要了解的一些數據命中第一個應用程序(測試運行的地方)。我怎樣才能讓rails服務器使用黃瓜在測試中使用的相同數據庫?

我試過在運行黃瓜測試時通過script/serverscript/server -e test運行主服務器,但似乎無法強制服務器使用黃瓜在運行其步驟定義時使用的相同數據庫。也就是說,當第二個服務器將一些數據推送到主服務器中的控制器時,主服務器不知道黃瓜在數據庫中做出的任何條目。我怎樣才能讓黃瓜和主服務器使用相同的數據庫?

+0

你是否有機會使用西班牙涼菜湯開闢前沿? – Justin 2010-05-14 19:11:52

回答

0

你打你的評論頭上的解決方案(沒有因果報應回覆)。測試在事務內運行,並在最後回滾。因此,外部服務器與Cucumber在數據庫上執行的任何查詢的效果是隔離的。禁用交易裝置是一條路,但我不知道它爲什麼不起作用。其他解決方案是a)重新構建你的代碼,因此你不需要一個公共的數據庫(這一定會導致其他地方的問題),或者b)讓你的Cucumber測試到達第二個服務器的數據庫(通過HTTP請求?)。

0

看來設置Cucumber::Rails::World.use_transactional_fixtures = falseenv.rb已經解決了這個問題。

編輯這不再使用最新的黃瓜安裝。通過黃瓜測試,rails服務器找不到數據庫中的數據。

2

您可以共享這樣的環境設置。

的config/database.yml的

test: &test 
    adapter: mysql 
    encoding: utf8 
    reconnect: false 
    database: baseproj_test 
    pool: 5 
    username: root 
    password: 
    socket: /tmp/mysql.sock 

cucumber: 
    <<: *test 
+0

這是黃瓜在安裝時對此文件所做的工作。我用來啓動服務器的命令:(腳本/服務器-e測試)不起作用仍然不能解決我的問題。 – James 2010-05-13 19:24:28

相關問題