2 人のユーザーを必要とするフローの統合を行う方法を探しています。このフローでは、順番にジャンプすることはできません。
User A does 1
User B does 2
User A does 3
User B does 4
User A does 5
...
そのため、テスト コードはランダムな順序で実行されます。次のような一連のテストを書くことができず、test "user A does 1" do ... end
それらが順番に実行されることを期待しています
では、上記の状況に対してどのように統合テストを作成すればよいでしょうか?
require 'test_helper'
class MyIntegrationTest < ActionController::IntegrationTest
test "Test interaction between 2 users" do
sign_in 'userA@mysite.com'
assert_response :success
get '/does/1'
assert_response :success
sign_out
sign_in 'userB@mysite.com'
assert_response :success
get '/does/2'
assert_response :success
sign_out
sign_in 'userA@mysite.com'
assert_response :success
get '/does/3'
assert_response :success
sign_out
sign_in 'userB@mysite.com'
# ahhhhhhhhhhhhhhhhhhhhhhhhhhh! .....
end
Rails 5 ではコントローラーのテストが削除される可能性があることに注意してください。
https://github.com/rails/rails/issues/18950#issuecomment-77924771
Railsの問題でこれを見つけました:
https://github.com/rails/rails/issues/22742