Rspec - 存根块和测试生成的主体的更好方法
Rspec - Better way to stub a block and test the yielded body
我想存根testBlock
块并直接测试它的内部。这是我的 class
class MyClass
def method1
testBlock('parameter') do
my_model.method2
end
end
def testBlock(param)
yield
end
end
这是测试
RSpec.describe MyClass do
it 'calls method2' do
allow(subject).to receive(:testBlock) { |&block| [1].each(&block) }
expect(my_model).to receive(:method2)
subject.method1
end
end
{ |&block| [1].each(&block) }
只是实现我想要的行为的一种解决方法,但是有没有更好的方法来实现这个而不用 each
块替换块本身?
提前致谢。
将 each
替换为 block.call
或仅删除参数和 yield
.
我假设 testBlock
的实际实现更复杂,因为按原样,yield
正是您所需要的。
我想存根testBlock
块并直接测试它的内部。这是我的 class
class MyClass
def method1
testBlock('parameter') do
my_model.method2
end
end
def testBlock(param)
yield
end
end
这是测试
RSpec.describe MyClass do
it 'calls method2' do
allow(subject).to receive(:testBlock) { |&block| [1].each(&block) }
expect(my_model).to receive(:method2)
subject.method1
end
end
{ |&block| [1].each(&block) }
只是实现我想要的行为的一种解决方法,但是有没有更好的方法来实现这个而不用 each
块替换块本身?
提前致谢。
将 each
替换为 block.call
或仅删除参数和 yield
.
我假设 testBlock
的实际实现更复杂,因为按原样,yield
正是您所需要的。