J'ai suivi le guide 15 TDD steps to create a Rails application - mais j'ai rencontré un problème que je n'arrive pas à résoudre. Pour le test fonctionnel du WordsController, je le code suivant:Mock Mock porte à un autre test
class WordsControllerTest < ActionController::TestCase
test "should get learn" do
get 'learn'
assert_response :success
end
test "learn passes a random word" do
some_word = Word.new
Word.expects(:random).returns(some_word)
get 'learn'
assert_equal some_word, assigns('word')
end
end
Dans la classe mot que j'ai le code suivant:
class Word < ActiveRecord::Base
def self.random
all = Word.find :all
all[rand(all.size)]
end
end
Quand je lance les essais, je fais l'expérience l'erreur suivante (raccourcies par souci de concision):
1) Failure: unexpected invocation: Word(...).random() satisfied expectations:
- expected exactly once, already invoked once: Word(...).random()
J'ai essayé de changer de changer l'ordre des essais avec une multitude d'autres choses, mais maintes et maintes fois je continue de recevoir les mêmes tes t échec - que Word.random() a déjà été appelé. Je cours Rails 3.0 beta 4 et Mocha 0.9.8. J'ai cherché longtemps et dur pour une solution à mon problème, mais je n'arrive pas à le trouver. Je suis nouveau à Ruby/Rails donc je ne suis pas familier avec la langue et les frameworks.
Merci d'avance!
Le démontage est-il censé être appelé entre les tests? – pushmatrix
Si 'Mocha' a été chargé correctement, il aura un framework de test modifié par singe pour appeler' Mocha :: API # mocha_verify' & 'Mocha :: API # mocha_teardown', c'est-à-dire que vous ne devriez pas avoir besoin de les appeler explicitement. La raison pour laquelle je demandais comment 'Mocha' était requis, était de savoir si les choses étaient chargées dans le bon ordre, de sorte que le patch de singe fonctionne correctement. –
Si vous définissez 'MOCHA_OPTIONS = debug' comme variable d'environnement lorsque vous exécutez vos tests, vous verrez quels frameworks de test sont corrigés avec succès. Si vous avez encore des problèmes avec ceci, laissez-moi savoir quelle est la sortie de débogage et dites-moi quelle version de Moka vous utilisez. Merci. –