Как правильно сделать это, используя принципы TDD? - PullRequest
0 голосов
/ 29 июня 2010

Я новичок в TDD и пытаюсь научиться правильно делать вещи.Поэтому мне нужно создать класс javascript для расширения веб-браузера, в котором информация о пользователе сохраняется в HTML5 localStorage (я назову этот класс UserInfoStorage).Однако я хочу, чтобы мое расширение поддерживало кросс-браузер, и способ взаимодействия с localStorage в разных браузерах различен (Chrome, Firefox, Safari).

Должен ли я создать другой класс с именем Storageчто характерно для каждого браузера и есть UserInfoStorage использовать это, чтобы хранить вещи в localStorage?Как бы я протестировал это без привязки теста для UserInfoStorage к реализации Storage?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 июня 2010

В общих чертах, вы должны макетировать тестируемое хранилище, чтобы убедиться, что UserInfoStorage правильно взаимодействует с ним. Они будут включать (часть) ваших модульных тестов на UserInfoStorage. Тогда у вас будут отдельные модульные тесты для каждой из реализаций Хранилища для каждого браузера, а в идеале также тестируется код, который определяет, какую реализацию Хранилища предоставить в соответствии с используемым браузером.

0 голосов
/ 02 июля 2010

Я понял, что лучший способ сделать это - создать тест Storage, который имеет базовую функциональность get и set (вроде тестовой базы данных), и использовать UserInfoStorage, чтобы использовать его для хранить и извлекать данные. Это позволяет тестировать интерфейс UserInfoStorage напрямую, не привязывая его к реализации Storage, поэтому, если я изменю способ работы UserInfoStorage, тесты все равно будут действительными (поскольку они не проверяют, является ли UserInfoStorage корректно взаимодействует с Storage, а функции UserInfoStorage дают желаемые результаты).

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