首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RSpec3模拟参数期望-使用块吗?

RSpec3模拟参数期望-使用块吗?
EN

Stack Overflow用户
提问于 2014-11-21 14:19:20
回答 1查看 198关注 0票数 2

我有一个方法,它接收一个块,并将其委托给另一个方法。非常简单:

代码语言:javascript
运行
复制
def self.build(&block)
  Builder.build(&block)
end

我希望RSpec (v3)测试接收到的块是否传递给了新方法。我的测试目前是这样的:

代码语言:javascript
运行
复制
describe ".build" do
  it "delegates to Builder" do
    block = -> {}
    expect(App::Builder).to receive(:build).with(&block)
    described_class.build(&block)
  end
end

但是RSpec给了我一个ArgumentError:with必须至少有一个参数。使用no\_args匹配器设置不接收参数的期望值。有没有办法让RSpec期待一个带有特定块的方法调用?

EN

回答 1

Stack Overflow用户

发布于 2014-11-21 14:30:11

不能使用expectation来测试是否传递了特定的块。您可以通过在代码中添加代码来检查代码是否正在运行,例如:

代码语言:javascript
运行
复制
describe ".build" do
  it "delegates to Builder" do
    block_is = double('block')
    block = -> {
      block_is.run
    }

    expect(App::Builder).to receive(:build).and_yield
    expect(block_is).to receive(:run)

    described_class.build(&block)
  end
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27055295

复制
相关文章

相似问题

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