2014-02-04 3 views
0

мне нужно издеваться объект, чей класс, как ожидается, несколько констант определены, например:Как подклассы издеваются над мокко?

class Driver 
    DRIVER_NAME = "google" 
end 

Я не хочу, чтобы просто использовать экземпляры класса в моих модульных тестов из-за дорогой инициализации, плюс он имеет простой интерфейс, поэтому его оптимально макет. Если бы я мог просто подкласс Mocha::Mock и добавить несколько констант, которые были бы идеальными. Однако я не нашел способ создать эти подклассы. Они требуют «издевательства» в качестве аргумента инициализации. Я пробовал:

TestDriver.new(self.mock.instance_method_get(:@mockery)) 

Что довольно странно привело:

неожиданный вызова: # < Мок: 0x35c0690 > .instance_method_get (: @ издевательство)

Источник Мокко довольно сложный и запутанный. Я даже не могу найти точку, где mock создается для каждого объекта Minitest::Test.

Итак, как я могу подклассировать в Mocha? Есть ли прямой путь?


Моего решения для резервного копирования, чтобы просто использовать класс три строки, показанный выше driver.stubs(:name)... вместо того, чтобы использовать издевается, но чувствует, как неправильный способ решить эту проблему.

ответ

0

Я только что понял (случайно), что я могу назвать expects на любом объекте, а не просто издевается ...

class TestDriverManager 
    def test_something 
    foo = TestDriver.new 
    foo.expects(:valid?).returns(true).once 

    # ... 
    end 

    class TestDriver 
    DRIVER_NAME = "test" 
    ... 
    end 
end 

Так что на самом деле нет никакой необходимости, по крайней мере, не в моем случае, подкласс издеваться ,

Смежные вопросы