Comment dire “any_instance” “should_receive” un certain nombre de fois dans RSpec

J'ai une importation de contrôleur dans les rails que les importations de plusieurs fichiers csv avec plusieurs enregistrements dans ma base de données. Je voudrais tester dans RSpec si les enregistrements sont effectivement enregistrées à l'aide de RSpec:

<Model>.any_instance.should_receive(:save).at_least(:once)

Cependant, je reçois le message d'erreur disant:

The message 'save' was received by <model instance> but has already been received by <another model instance>

Un exemple artificiel du contrôleur:

rows = CSV.parse(uploaded_file.tempfile, col_sep: "|")

  ActiveRecord::Base.transaction do
    rows.each do |row| 
    mutation = Mutation.new
    row.each_with_index do |value, index| 
      Mutation.send("#{attribute_order[index]}=", value)
    end
  mutation.save          
end

Est-il possible de tester cette aide RSpec ou est-il une solution de contournement?

  • Quelle est la version de RSpec utilisez-vous et quel est le message d'erreur que vous voyez?
  • rspec (2.8.0) et le message est le suivant: Le message "enregistrer" a été reçu par <instance du modèle> mais il a déjà été reçu par <une autre instance du modèle>
  • C'est le comportement attendu. Le point de any_instance est pas de savoir quelle instance unique est à attendre quelque chose, mais c'est encore limite à une seule instance.
  • C'est le comportement attendu - acquis - mais il n'est pas très utile si vous souhaitez tester cette. Et il ne semble pas être une autre méthode, comme "many_instances" qui relaxe la contrainte d'une instance.
InformationsquelleAutor Harm de Wit | 2012-03-21