В приложении rails 3 я использую mocha, чтобы сделать некоторые насмешки в своих функциональных тестах.Однако, похоже, он не высмеивает метод класса в функциональном контроллере.
Код контроллера
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
, я могу просто отлично смоделировать метод класса, и он будет работать как положено.
Я прошел через этот пост и сделал Gemfile, require "false"
бит.Но безрезультатно, он просто не хочет высмеивать метод класса User
в контроллере.
Другие вещи, которые я пробовал, если я делаю User.tags_starting_with("bla")
в самом тесте,ожидание проходит.
Таким образом, есть какие-либо идеи о том, почему User
в контроллере не издевается правильно?