gpt4 book ai didi

ruby - 在 rspec 中,为什么我不能在辅助类中使用 be_false 等?

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:26 24 4
gpt4 key购买 nike

在 rspec 测试中使用辅助类时,我看不到使用 .should be_false 习惯用法。在 helper .rb 文件中定义的函数中没有问题,但是当它在类中时,找不到 be_false 符号。下面的例子——为什么这不起作用?我如何在助手中使用 be_false 等?

这样的断言似乎只在测试本身中有效,这似乎是有意为之的。我有可能因例如而失败的助手。网络通信问题实际上是真正的测试失败,因为我的助手使用的网络通信是被测系统的一部分。我应该如何让我的测试在辅助类中优雅地失败?

结果

$ spec ./test.rb 
helper_foo 1
helper_foo 2
helper_foo 3
FunctionFoo 1
F

1)
NameError in 'my_test should test that helper classes can use should be_false etc'
undefined local variable or method `be_false' for #<HelperFoo:0x2b265f7adc98>
./helper.rb:13:in `FunctionFoo'
./test.rb:13:

Finished in 0.004536 seconds

1 example, 1 failure

测试.rb

require "helper.rb"

describe "my_test" do
it "should test that helper classes can use should be_false etc" do

(1 == 1).should be_true
(2 == 1).should be_false

helper_foo()

instance = HelperFoo.new()
instance.FunctionFoo
end
end

helper.rb

def helper_foo
puts "helper_foo 1"
(1==2).should be_false
puts "helper_foo 2"
(2==2).should be_true
puts "helper_foo 3"
end

class HelperFoo
def FunctionFoo
puts "FunctionFoo 1"
(1==2).should be_false
puts "FunctionFoo 2"
(2==2).should be_true
puts "FunctionFoo 3"
end
end

最佳答案

be_true 这样的期望仅在 it block 的上下文中可用。当您调用 HelperFoo.new 上的方法时,它不再在 操作的任何神奇类的上下文中执行。

您应该阅读 instance_eval 以了解什么是评估上下文。

此外,如果您需要在外部定义 RSpec 示例,您应该使用 Shared Example Groups .

关于ruby - 在 rspec 中,为什么我不能在辅助类中使用 be_false 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3336832/

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