Как написать тестируемый код для специального теста - PullRequest
1 голос
/ 25 февраля 2012

У меня есть асинхронная функция readFile (путь, обратный вызов).

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

Впоследствии, когда тот же файл читается, он просто возвращает содержимое из памяти, а не снова попадает в файловую систему.

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

Как я могу реализовать readFile (), чтобы его функция кэширования была тестируемой?

Ответы [ 4 ]

2 голосов
/ 25 февраля 2012

Вы издеваетесь над собственным средством открытия файлов.

1 голос
/ 25 февраля 2012

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

0 голосов
/ 25 февраля 2012

На уровне кода определенно вы должны были проверить, есть ли содержимое в кеше или нет, если нет, перейдите в файл и прочитайте возврат из кэша. Эту проверку можно смоделировать, чтобы она возвращала true в одном случае и false в другом случае, и вы можете написать тест вокруг этого. Надеюсь, что здесь есть смысл.

0 голосов
/ 25 февраля 2012

Почему я не думал об этом раньше. Я мог бы просто передать флаг в обратный вызов (err, content, fromMemory), указывающий, является ли он файловой системой или памятью

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