gpt4 book ai didi

postgresql - 在测试环境中创建的新用户使用 Wallaby/Phoenix 不断增加他们的 ID

转载 作者:行者123 更新时间:2023-11-29 12:06:58 25 4
gpt4 key购买 nike

我是 Elixir/Phoenix 的新手,所以我不确定这是否按预期工作或我应该解决的问题。

我有一个 Phoenix 应用程序,我刚刚开始向其添加集成测试。在设置和测试用户注册功能几天后,我现在开始测试登录。

我正在使用小袋鼠:

测试.exs:

config :happy_app, :sql_sandbox, true
config :wallaby,
driver: Wallaby.Experimental.Chrome,
chrome: [headless: true],
screenshot_on_failure: true

test_helper.exs:

ExUnit.start()
Ecto.Adapters.SQL.Sandbox.mode(HappyApp.Repo, :manual)
{:ok, _} = Application.ensure_all_started(:wallaby)
Application.put_env(:wallaby, :base_url, HappyAppWeb.Endpoint.url())

我的测试是这样的:

defmodule HappyAppWeb.UserLoginTest do
use HappyAppWeb.IntegrationCase, async: true

alias HappyApp.Accounts
import HappyAppWeb.IntegrationSteps

@tag integration: true
test "user can login", %{session: session} do
email = "test-user@example.com"
password = "12345678"

# seed user into db
user = Accounts.create_user(%{email: email, password: password})
IO.inspect user

# logging in with the user's email and password

# asserting the view is correct
end
end

当我检查用户时:IO.inspect user 我得到:

IO.inspect user


=>
{:ok,
%HappyApp.Accounts.User{
__meta__: #Ecto.Schema.Metadata<:loaded, "users">,
email: "test-user@example.com",
id: 449,
inserted_at: ~N[2019-11-24 13:20:33],
password: nil,
password_hash: "shhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh",
updated_at: ~N[2019-11-24 13:20:33]
}}

注意 id: 449,。那是对的吗?不应该在测试之间重置为 1 吗?

手动查看 postgres 我发现 happy_app_test 数据库确实是空的。数据在别处吗?

最佳答案

这个东西跟数据库引擎有关。我找不到可以肯定地确认它的信息,但我怀疑回滚正在删除以前插入的行。

当您删除行时,id 计数器不会重置,它会继续递增。基本上你需要删除/更新表来重置计数器,或者如果你真的需要,你可以手动重置它。

如果重新启动测试,您会注意到第一个插入记录的测试将从 1 开始,其他测试将继续计数器,因为在测试之前您运行迁移并创建一个新表,其中包含一个新的串行计数器。

如果您有兴趣了解更多关于 ID 自动递增的信息,您可以阅读 here .

关于postgresql - 在测试环境中创建的新用户使用 Wallaby/Phoenix 不断增加他们的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59018218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com