我正在使用Shoulda,Mocha和Test :: Unit进行测试。我有以下控制器和测试:
class FoosController < ApplicationController
caches_action :show
def show
@foo = requested_foo
end
private
def requested_foo
Foo.find(params[:id])
end
end
class FoosCachingTest < ActionController::IntegrationTest
def setup
@foo = Foo.first
@session = open_session
end
context 'FoosController#show' do
setup do
@session.get('/foos/1')
end
before_should 'not fetch the Foo from the database' do
FoosController.any_instance.expects(:requested_foo).never
end
before_should 'fetch the Foo from the database' do
FoosController.any_instance.expects(:requested_foo).once.returns(@foo)
end
end
end
这些测试的两个如何通过?在任何时候我都没有明确地将我的模拟到期。 Mohca和Shoulda在这方面的相互作用是否很差?
答案 0 :(得分:0)
啊哈!问题在于期望确实会失败,但是他们抛出的错误会被控制器的错误处理所吞噬。测试操作正确呈现会使正确的测试失败。