Как проверить, вызывает ли метод другой метод из того же класса? - PullRequest
1 голос
/ 11 февраля 2020

Я пытаюсь настроить юнит-тест, используя Minitest, для класса. В этом классе некоторые методы вызывают другие методы.

Это очень упрощенная концепция того, что я пытаюсь сделать.

require 'minitest/autorun'

class Book
    def caller
        self.called
    end

    def called
        nil
    end
end

class BookTest < Minitest::Test
    def test_checkCaller
        fake = Minitest::Mock.new
        fake.expect(:caller, nil)
        fake.caller
        assert(fake.verify,msg=nil)
    end
end

Это возвращает:

Run options: --seed 24362

# Running:

.

Finished in 0.002716s, 368.1771 runs/s, 368.1771 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

Я даже не уверен, что это делаю что хочу. Я хочу подтвердить, что called вызывается caller.

. Позже я также хочу проверить, что при отправке определенного сообщения в caller выполняется определенный код. called, например, добавив это сообщение в очередь.

[Прежде чем кто-либо пометит это как дубликат, убедитесь, что предполагаемый пост на самом деле совпадает с тем, что я спрашиваю, и, предпочтительно, имеет законный ответ на мой вопрос. Я просмотрел несколько похожих постов, и каждый немного отличается.]

Спасибо!

1 Ответ

2 голосов
/ 11 февраля 2020

Мне нравится использовать камень под названием spy. Таким образом, вы можете по существу шпионить над методом и посмотреть, был ли он вызван. https://github.com/ryanong/spy

...