J'ai un scénario plus ou moins comme celui-ci
class A def initialize(&block) b = B.new(&block) end end
3 Réponses :
Je pense que vous voulez:
l = lambda {} B.expects(:new).with(l) A.new(&l)
N'a pas fonctionné. Je commence à croire que je ne peux pas faire ça de cette façon. Je vais essayer une autre approche ici. Merci! :)
J'ai essayé cela avec MOCHA et RSPEC et, bien que je puisse obtenir un test de passage, le comportement était incorrect. De mes expériences, je conclus que la vérification d'un bloc est adopté n'est pas possible.
Question: Pourquoi voulez-vous passer un bloc de paramètre? À quel moment le bloc durera-t-il? Quand devrait-il être appelé? P>
Peut-être que c'est vraiment le comportement que vous devriez être testé avec quelque chose comme: p>
est B :: Nouveau code> cédant au bloc et le bloc modifie-t-il un paramique que
donne code> fournit? Si oui, vous pouvez le tester de cette façon:
require 'minitest/autorun'
require 'mocha/setup'
describe 'A' do
describe '::new' do
it 'passes the block to B' do
params = {}
block = lambda {|p| p[:key] = :value }
B.expects(:new).yields(params)
A.new(&block)
params[:key].must_equal :value
end
end
end