我一直遵循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 的新手,所以对语言和框架相当陌生。
提前致谢!