RSpec:如何测试收益率自我

Mdesantis

我正在使用rspec 3.0.0.beta1。我必须测试一种产生self以下结果的方法

class Test
  def initialize
    yield self if block_given?
  end
end

这是一个成功的测试:

describe Test do
  context 'giving a block with one argument' do
    it 'yields self'
      expect { |b| described_class.new &b }.to yield_with_args described_class
    end
  end
end

但它仅测试对象类,而不测试对的标识self

这是我写的最接近的(失败)测试:

describe Test do
  context 'giving a block with one argument' do
    it 'yields itself'
      instance = nil
      expect { |b|
        instance = described_class.new &b
      }.to yield_with_args instance
    end
  end
end

实际上,它失败了,因为在评估最后一个实例出现时它是nil,因此它与块评估中的实例不匹配。

尼尔·斯莱特

yield匹配器不能在你的情况直接使用。最简单的事情是稍后使用不同的匹配器修改第二个代码。

describe Test do
  context 'giving a block with one argument' do
    it 'yields itself'
      yielded_instance = nil
      new_instance = described_class.new { |i| yielded_instance = i }
      expect(yielded_instance).to be new_instance
    end
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我的冻结/收益率如何传递变化的变量?

来自分类Dev

收益率无效,但收益率有效

来自分类Dev

ES6收益率(收益率1)(收益率2)(收益率3)()

来自分类Dev

收益率IEnumerable <IEnumerable <... >>

来自分类Dev

收益率-内存优化

来自分类Dev

Ruby Blocks(收益率)

来自分类Dev

C#中的收益率回报-对字段的公开性进行失败测试

来自分类Dev

在此示例中,为什么“收益率”和“收益率收益率”具有相同的行为?

来自分类Dev

在此示例中,为什么“收益率”和“收益率收益率”具有相同的行为?

来自分类Dev

Scala的未来内部收益率

来自分类Dev

更紧凑的“收益率回报”方法?

来自分类Dev

IEnumerator收益率返回类型错误

来自分类Dev

使用收益率而不返回类型

来自分类Dev

PHP收益率,奇怪的行为

来自分类Dev

收益率可重入吗?

来自分类Dev

OpenCV 3.1 ANN预测收益率

来自分类Dev

瓦拉收益率未恢复

来自分类Dev

IEnumerator收益率返回类型错误

来自分类Dev

收益率怪异行为

来自分类Dev

使用收益率而不返回类型

来自分类Dev

执行收益率返回后的代码

来自分类Dev

将列表与收益率连接

来自分类Dev

R中的收益率曲线排序

来自分类Dev

延迟评估收益率值

来自分类Dev

熊猫年化收益率

来自分类Dev

如果我向其传递期权,Scala的收益率是否会返回无?

来自分类Dev

如何将收益率应用于递归函数

来自分类Dev

收益率回报与LINQ Select之间的结果不同

来自分类Dev

修改收益率的返回值