gpt4 book ai didi

ruby-on-rails - 应该破坏我的回溯吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:44:36 25 4
gpt4 key购买 nike

我有一个或多或少像这样的测试:

class FormDefinitionTest < ActiveSupport::TestCase
context "a form_definition" do
setup do
@definition = SeedData.form_definition
# ...

我特意加了一个

raise "blah"

在路上的某个地方,我得到了这个错误:

RuntimeError: blah
test/unit/form_definition_test.rb:79:in `__bind_1290079321_362430'

当我应该得到一些东西时:

/Users/pupeno/projectx/db/seed/sheet_definitions.rb:17:in `sheet_definition': blah (RuntimeError)
from /Users/pupeno/projectx/db/seed/form_definitions.rb:4:in `form_definition'
from /Users/pupeno/projectx/test/unit/form_definition_test.rb:79

知道什么正在清理/破坏我的回溯吗?我怀疑是 shoulda,因为当异常发生在设置内部或 should 是它发生的时候。

这是一个 Rails 3 项目,以防万一。

最佳答案

那是因为 shoulda 方法 #context 正在为您生成代码。对于每个 #should block ,它都会为您生成一个完全独立的测试,例如

class FormDefinitionTest < ActiveSupport::TestCase
context "a form_definition" do
setup do
@definition = SeedData.form_definition
end

should "verify some condition" do
assert something
end

should "verify some other condition" do
assert something_else
end
end
end

然后 #should 将生成两个完全独立的测试(针对 #should 的两次调用),一个执行

      @definition = SeedData.form_definition
assert something

还有一个执行

      @definition = SeedData.form_definition
assert something_else

值得注意的是,它不会生成按顺序执行所有三个步骤的单个测试。

这些生成的代码块有类似_bind_ something 的方法名称,生成的测试的名称是遍历到should block 的所有上下文名称的串联加上should block 提供的字符串(以“should”为前缀)。有 another example in the documentation for shoulda-context .

关于ruby-on-rails - 应该破坏我的回溯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214219/

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