【发布时间】:2011-03-08 07:50:24
【问题描述】:
我一直在关注15 TDD steps to create a Rails application 指南 - 但遇到了一个我似乎无法解决的问题。对于 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 的新手,所以对语言和框架不太熟悉。
提前致谢!
【问题讨论】:
标签: ruby functional-testing ruby-mocha