Внедрение переменной в функцию Ruby - PullRequest
0 голосов
/ 17 июля 2011

Я пишу тест для некоторого существующего кода Ruby, который выглядит примерно так:

module Foo
  module Bar

    private

    def function_i_want_to_test (a, b)
      if controller.is_something? a, b
        puts a
      else
        puts b
      end
    end
  end
end

Переменный controller магически вставлен в функцию откуда-то еще.Чтобы получить доступ к этой функции из моих тестов, я могу сделать include Foo::Bar в своем тестовом классе и впоследствии вызвать функцию нормально.К сожалению, это не работает, так как controller не установлен.Любые идеи, как я могу установить переменную controller из моего теста?

1 Ответ

1 голос
/ 17 июля 2011

Модуль предполагает, что «контроллер» доступен в классе / модуле, в который он включен.Возможно это для включения в классы Rails ActionController?Кроме того, это, вероятно, должен быть вызов метода, а не локальная переменная.Итак, сделайте что-то вроде этого:

class MyClass
  include Foo::Bar

  def controller
    # Do stuff.
  end
end

Для теста вы также можете использовать Mocha (или другие насмешливые библиотеки), чтобы сделать процесс немного менее подробным.

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