这些测试都是如何通过的?

时间:2010-10-06 17:46:52

标签: ruby-on-rails testing mocking shoulda mocha

我正在使用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在这方面的相互作用是否很差?

1 个答案:

答案 0 :(得分:0)

啊哈!问题在于期望确实会失败,但是他们抛出的错误会被控制器的错误处理所吞噬。测试操作正确呈现会使正确的测试失败。