Я тестирую класс, который ничего не делает? - PullRequest
4 голосов
/ 14 июля 2009

В моем приложении у меня есть два класса: регистратор, который фактически регистрирует в базе данных, и фиктивный регистратор, который ничего не делает (используется, когда регистрация отключена). Вот весь класс DummyLog:

class DummyLog(object):
    def insert_master_log(self, spec_name, file_name, data_source,
                          environment_name):
        pass
    def update_master_log(self, inserts, updates, failures, total):
        pass

С одной стороны, я, вероятно, должен был бы отпустить это, а не тестировать, так как на самом деле нет никакого кода для тестирования. Но потом, мой «инфицированный тестом» инстинкт говорит мне, что это оправдание и что простота класса означает, что я должен быть больше готов проверить его. У меня просто не получается подумать, что тестировать.

Есть идеи? Или я должен просто отпустить это и не писать никаких тестов?

Ответы [ 15 ]

1 голос
/ 15 июля 2009

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

0 голосов
/ 15 июля 2009

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

0 голосов
/ 15 июля 2009

Я думаю, что единственное полезное преимущество теста для такого класса - надеяться, что кто-то начнет его модифицировать в будущем. Иначе я бы не стал беспокоиться.

0 голосов
/ 15 июля 2009

Согласно правилу «Вам это не нужно», вы не должны писать тест, когда нечего тестировать, даже если однажды он может что-то сделать.

Как проверить, что что-то ничего не сделало? Это хороший философский вопрос:)

0 голосов
/ 15 июля 2009

Вы можете проверить аргументы, которые ему передаются. Если это фиктивный объект, который будет вызываться с определенным набором аргументов, то изменение этих аргументов приведет к сбою. Подобный тест гарантирует, что, если он действительно будет изменен, по крайней мере, не будет другого кода, который зависит от него.

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