Rspec, des Rails: comment faire pour tester les méthodes privées de contrôleurs?

J'ai contrôleur:

class AccountController < ApplicationController
  def index
  end

  private
  def current_account
    @current_account ||= current_user.account
  end
end

Comment tester la méthode privée current_account avec rspec?

P. S.-je utiliser Rspec2 et Ruby on Rails 3

  • Cela ne veut pas répondre à votre question, mais les méthodes privées ne sont pas censés être testé. Vos tests doivent seulement se soucient de la vraie chose - votre API publique. Si vos méthodes de travail, puis privé de ceux qu'ils appellent aussi le travail.
  • Je suis en désaccord. Il est important de tester n'importe quel suffisamment complexe pour la fonctionnalité dans votre code.
  • Je suis en désaccord aussi. Si votre public API travaille, vous ne pouvez assumer vos méthodes privées fonctionnent comme prévu. Mais vos spécifications peut-être en passant par une coïncidence.
  • Il serait préférable d'extraire la méthode privée dans une nouvelle classe qui est testable, si la méthode privée besoins de test.
  • Le cadre du point de l'unité de test est d'aider à briser votre logique bas en testables composants. Parfois, ces petits composants n'a de sens que les méthodes privées, des choses qui ne sont pas appelés de l'extérieur de la classe -- mais ils ont encore besoin d'être testé. Comme le nombre de méthodes privées augmente, le nombre de tests vous avez besoin de tester chacun de ces sous-méthodes augmente géométriquement, comme vous êtes maintenant faut tester chaque permutation des entrées possibles pour tester chaque cas d'utilisation.
  • Vous avez raison. Avec plus de recul et l'expérience, je suis en désaccord avec mes trois ans de commentaire. 🙂
  • Les joies de google, le rendant facile à oublier datetime des timbres depuis l'année 2000.
  • Voulant tester une méthode privée est un bon signe que la classe d'origine a trop de responsabilités. Il y a des exceptions à tout, bien sûr. Mais souvent nous inventer des exceptions, car le refactoring est dur.

InformationsquelleAutor petRUShka | 2010-11-24