首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用rspec访问即时变量

如何使用rspec访问即时变量
EN

Stack Overflow用户
提问于 2014-04-09 01:25:15
回答 1查看 47关注 0票数 2

我有这样的课。

代码语言:javascript
复制
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

如果连接失败,我想计算一下@error_count,所以我这样写。

require_relative 'foo‘

代码语言:javascript
复制
describe Foo do
  before(:each){@foo = Foo.new}

  describe "#run" do
    context "when connection fails" do
      before(:each){ Net::HTTP.stub(:start).and_raise }
      it "should count up @error_count" do
        expect{ @foo.run }.to change{ @foo.error_count }.from(0).to(1)
      end
    end
  end
end

然后我得到了这个错误。

代码语言:javascript
复制
 NoMethodError:
   undefined method `error_count' for #<Foo:0x007fc8e20dcbd8 @error_count=0

如何使用Rspec访问实例变量?

编辑

代码语言:javascript
复制
describe Foo do
  let(:foo){ Foo.new}
  describe "#run" do
    context "when connection fails" do
      before(:each){ Net::HTTP.stub(:start).and_raise }
      it "should count up @error_count" do
        expect{ foo.run }.to change{foo.send(:error_count)}.from(0).to(1)
      end
    end
  end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 01:32:56

试试@foo.send(:error_count)吧,我想它应该能用。

更新:在文档中找到的

代码语言:javascript
复制
expect{ foo.run }.to change{foo.instance_variable_get(:@error_count)}.from(0).to(1)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22951186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档