【发布时间】:2014-04-09 14:40:31
【问题描述】:
我有这样的课
require 'net/http'
class Foo
def initialize
@error_count = 0
end
def run
result = Net::HTTP.start("google.com")
@error_count = 0 if result
rescue
@error_count += 1
end
end
这是它的规范文件。
require_relative 'foo'
describe Foo do
let(:foo){ Foo.new}
describe "#run" do
context "when fails 30 times" do
foo.instance_variable_set(:@error_count, 30)
end
end
end
然后运行rspec foo_spec.rb,然后失败并出现此错误。
foo_spec.rb:7:in `block (3 levels) in <top (required)>': undefined local variable or method `foo' for #<Class:0x007fc37410c400> (NameError)
我应该如何在 rspec 中调用instance_variable_set 方法?
编辑
如果30次失败,我想调用send_error方法。
require 'net/http'
class Foo
def initialize
@error_count = 0
end
def run
result = Net::HTTP.start("google.com")
@error_count = 0 if result
rescue
@error_count += 1
send_error if @error_count >= 30
end
def send_error
end
end
以及用于测试send_error 在连接失败 30 次时被调用的规范文件。
require_relative 'foo'
describe Foo do
let(:foo){ Foo.new}
describe "#run" do
context "when fails 30 times" do
it "should send error" do
foo.instance_variable_set(:@error_count, 30)
expect(foo).to receive(:send_error)
end
end
end
end
【问题讨论】: