2011-02-01 24 views
2

因此,我們必須對用戶模型的默認腳手架的測試,具體如下:Rails的功能測試用fixture與失敗「的Mysql ::錯誤:重複的條目」

test "should create user" do 
    assert_difference('User.count') do 
     post :create, :user => @user.attributes 
    end 

    assert_redirected_to user_path(assigns(:user)) 
    end 

我們有一個用戶燈具:

one: 
    email: [email protected] 
    name: Joe Smith 

問題是測試失敗:

1) Error: test_should_create_user(UsersControllerTest): ActiveRecord::RecordNotUnique: Mysql::Error: Duplicate entry '[email protected]' for key 2: INSERT INTO users

什麼似乎是發生的是,軌道加載夾具,然後嘗試使用相同的「一個」數據創建用戶AGAIN,並且該唯一性約束失敗。這一切都有道理。問題是如果您需要從測試中創建的用戶對象的fixture文件中提取數據(如果使用相同的fixture來預填充數據庫),我們該如何測試這個問題?

+0

問題仍然存在於rails 4和mysql中。你找到了解決方案嗎? – hrust 2015-11-18 00:44:25

回答

0

最棘手的解決方案是將電子郵件參數更改爲發送不同的電子郵件地址到創建操作。

但是,我認爲更好更長遠的解決方案是切換到使用FactoryGirl而不是固定裝置。這樣,您可以控制何時在測試數據庫中創建記錄,並且能夠隨着數據模型的發展調整FactoryGirl生成的內容。

然後,我會修改上面的調用,將正確的參數發送到創建操作並通過測試。