gpt4 book ai didi

ruby-on-rails - 将重复的断言封装在一个函数中

转载 作者:行者123 更新时间:2023-11-28 20:51:11 24 4
gpt4 key购买 nike

我有几个集成测试,其中一些断言是相同的。出于可维护性考虑,我想将每个测试的通用断言重新组合在一个独特的功能下。

  test "login with invalid information" do
get login_path
assert_template 'sessions/new'
post login_path, params: { session: { email: "", password: "" } }
assert_template 'sessions/new'
assert_not flash.empty?
get root_path
assert flash.empty?
end

test "login with valid information followed by logout" do
get login_path
assert_template 'sessions/new'
post login_path, params: { session: { email: @user.email, password: "password" } }
.

end

例如,

get login_path
assert_template 'sessions/new'

位在两个测试中重复。我怎样才能使它更易于维护?

最佳答案

不应在每次测试中断言您描述为“重复”的部分。如果第一个测试在断言模板时失败,那么使用相同断言的其他测试也将失败。这意味着您应该将该测试逻辑提取到单个测试中,例如 test 'login rendered template' 并从其他测试:

test "login rendered template" do
get login_path
assert_template 'sessions/new'
end

test "login with invalid information" do
# template assertion already done in previous test
post login_path, params: { session: { email: "", password: "" } }
# [...]
end

这是测试您的应用程序的不良做法示例。单个测试应该对特定逻辑/功能做出断言,并且不会重复。如果您在测试套件中看到重复的代码/断言片段,可能应该将其提取到单个测试中。

关于ruby-on-rails - 将重复的断言封装在一个函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45984387/

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