2011-05-13 69 views
0

在rails 3應用程序中,我使用摩卡在我的功能測試中做了一些嘲弄。然而,它似乎並沒有模擬功能控制器中的類方法。摩卡沒有嘲笑功能測試中的類方法(Rails 3)

控制器代碼

class TagsController < ApplicationController 
    respond_to :json 

    def index 
    response = User.tags_starting_with(params[:query]) 
    respond_with response 
    end 
end 

功能測試

class TagsControllerTest < ActionController::TestCase 
    context "index action with query" do 
    setup do 
     query = "A_QUERY" 
     get :index, :query => query, :format => "json" 
     @tags = ["these", "are", "test", "tags"] 
     User.expects(:tags_starting_with).returns(@tags).once 
    end 

    should "return JSON formatted tags array" do 
     tags = JSON::parse @response.body 
     assert_equal @tags, tags 
    end 
    end 
end 

的Gemfile

gem "mocha" 

如果我運行這個測試,我一直運行到

- expected exactly once, not yet invoked: User.tags_starting_with(any_parameters) 

如果我使用rails console test,我可以嘲笑一個類的方法就好了,它按預期工作。

我已經通過this post並已完成Gemfile,require "false"位。但無濟於事,它只是不想嘲笑控制器中User的分類方法。

我試過的其他事情,如果我在測試本身做User.tags_starting_with("bla"),期望就會過去。

因此,有關控制器中User爲什麼沒有被正確模擬的任何想法?

回答

3

由於在Twitter上說: 你設置你的模擬你做你的要求:-)

+0

之後還有我在嘲笑關於與負載路徑的Gemfile雜耍。謝謝! – pjaspers 2011-05-13 09:32:31