6
votes

Des méthodes simulées qui reçoivent un bloc comme paramètre

J'ai un scénario plus ou moins comme celui-ci

class A
  def initialize(&block)
    b = B.new(&block)
  end
end


0 commentaires

3 Réponses :


0
votes

Je pense que vous voulez:

l = lambda {}
B.expects(:new).with(l)
A.new(&l)


1 commentaires

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! :)



2
votes

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é?

Peut-être que c'est vraiment le comportement que vous devriez être testé avec quelque chose comme: xxx


0 commentaires

0
votes

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


0 commentaires