Я следил за 15 шагов TDD для создания руководства Rails - но столкнулись с проблемой, которую я не могу решить. Для функционального теста WordsController у меня есть следующий код:
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
В классе Word у меня есть следующий код:
class Word < ActiveRecord::Base
def self.random
all = Word.find :all
all[rand(all.size)]
end
end
Когда я запускаю тесты, я испытываю следующую ошибку (сокращенную для краткости):
1) Failure: unexpected invocation: Word(...).random() satisfied expectations:
- expected exactly once, already invoked once: Word(...).random()
Я попытался изменить изменение порядка тестов вместе с множеством других вещей, но снова и снова я продолжаю получать тот же самый сбой теста - что Word.random() уже был вызван.
Я запускаю Rails 3.0 beta 4 и Mocha 0.9.8. Я долго искал решение моей проблемы, но, похоже, я не могу ее найти. Я новичок в Ruby/Rails, поэтому я не знаком с языком и фреймворками.
Спасибо заранее!