使用mock_model测试控制器的问题

时间:2011-08-26 18:09:37

标签: ruby-on-rails rspec tdd rspec-rails

我正在尝试测试模型但是在创建模拟模型时遇到了问题。

这是控制器的一部分:

def show
    @license = License.find(params[:id])

以下是我的rspec的一部分:

it "can show a license" do
   mocks = (1..3).map { mock_model(License) }
   License.should_receive(:all).and_return(mocks)       
   post :show, {:id => 1}

然而,当我运行我的rspec时,我收到一个错误:

Failure/Error: License.should_receive(:all).and_return(mocks)
(<License(id: integer, license_id: string, location: string, format: string, license_type: string, language: string, context: string, licensor: string, licensee: string, resource: string, created_at: datetime, updated_at: datetime) (class)>).all(any args)
           expected: 1 time
           received: 0 times

另外,如果我使用它,我怎样才能更改License对象上的id的id。 会'嘲笑[0] .id = 5'工作吗?

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

应该是License.should_receive(:find).with(1).and_return(mock)这种情况下只有一个模拟就足够了:mock = mock_model(License)