Мокко не высмеивает метод класса в функциональном тесте (Rails 3) - PullRequest
0 голосов
/ 13 мая 2011

В приложении 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 в контроллере не издевается правильно?

1 Ответ

4 голосов
/ 13 мая 2011

Как сказано в твиттере: Вы выставляете себя на посмешище после выполнения запроса: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...