我面临的问题是,在所有测试中,我需要对登录用户进行不止一件事的断言,它似乎丢失了保存的会话。
我有一个设置代码,它在每次测试之前分配一个夹具用户:
setup %{conn: conn} = config do
if username = config[:login_as] do
user = insert_user(username: username)
conn = assign(conn, :current_user, user)
{:ok, conn: conn, user: user}
else
:ok
end
end
我在登录区域发生的所有测试都带有标签login_as: "username"
。
@tag login_as: "max"
test "redirects to show when data is valid", %{conn: conn} do
conn = post conn, debit_event_path(conn, :create), debit_event: @create_attrs
assert %{id: id} = redirected_params(conn)
assert redirected_to(conn) == debit_event_path(conn, :show, id) #1
conn = get conn, debit_event_path(conn, :show, id)
assert html_response(conn, 200) =~ "Show Debit event" #2
end
第一个断言(代码中的#1 注释)始终有效,但由于某种原因,第二个断言(代码中的#2 注释)失败,它的行为就像我的用户已注销。在我需要在请求之间保留用户的所有情况下都会发生这种情况。
是否有正确的方法可以让这些数据在测试请求中保持不变,因为它是浏览器请求?