我在 Rails 项目中测试 block 调用参数时遇到了问题。
我大约有这个代码(简化):
DropboxApi.read_path do |batch|
# some actions are here
end
其中批处理是数据的哈希值。
我有一个 rspec 规范,它测试 DropboxApi 方法,我需要测试“批处理”的某些字段。我想要得到这样的东西:
it { expect(batch).to respond_to(:data) }
it { expect(batch.data.count).to eq(6) }
我没有找到一些方法来做到这一点。在这种情况下,产量匹配器没有帮助,因为它们仅检查 block 调用而不检查其参数。
有人可以帮助实现我想要的吗?我想我可能应该改变我的规范方法。但我还不知道怎么办。
最佳答案
实际上非常简单。
it "responds to data" do
DropboxApi.read_path do |batch|
expect(batch).to respond_to(:data)
end
end
it "has a count of 6" do
DropboxApi.read_path do |batch|
expect(batch.data.count).to eq(6)
end
end
如果您确实希望它看起来更简洁,就像您的示例一样,您可以执行以下操作。
let(:batch) {
DropboxApi.read_path do |batch|
return batch
end
}
it { expect(batch).to respond_to(:data) }
it { expect(batch.data.count).to eq(6) }
关于ruby-on-rails - R规范。测试 block 调用的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402128/