【问题标题】:Testing a method with yield using rspec使用 rspec 测试具有产量的方法
【发布时间】:2020-07-23 17:32:48
【问题描述】:

我有一个产生的方法。我正在针对两种情况对其进行测试。

1) 如果它产生(我可以使用产生匹配成功地做到这一点)

2) 如果它不屈服。 (如果有任何正确方向的帮助,我们将不胜感激。)

方法:

def example_method
  yield if block_given?
end

规格:

it 'yields to a block' do
  expect{ |b| example_method(&b) }.to yield_with_no_args
end

it 'does not yield if a block is not given' do
end

第一个规范成功通过,但对于第二个规范,我不确定如何继续,因为产量匹配需要给出一个块,如果给出一个块,它就会通过,而我想测试它如果没有给出块,则不会产生。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby rspec yield


    【解决方案1】:

    试试类似的东西

    expect { example_method }.to_not yield_control
    

    【讨论】:

    • 值得链接到Yield Matchers 上的文档,因为那里有一些很好的例子。
    • 这是我最初的方法,但是当我尝试这样做时,我收到一个错误消息:“您的期望块必须接受与此匹配器一起使用的参数。将参数作为块传递给你正在测试的方法。”如果您浏览产量匹配器的文档,即使它指定必须传递一个块。
    • 如果你使用块会发生什么?
    • 测试失败,因为该方法将屈服于块。
    • 我试试这个,我会告诉你的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多