Как делают меня код модульного теста, который использует интерфейс Fluent?

Смотрите на xVal. Это может пользоваться любой клиентской библиотекой проверки, но использованием jQuery Valiation по умолчанию.

9
задан Andronicus 17 August 2009 в 11:06
поделиться

3 ответа

Я думаю, что ФИ делает больше, чем нужно. Я предполагаю, что вы используете Компьютеры как средство отображения данных, а также используете его для построения запроса. Судя по тому, что вы показали, запрос строится из этого:

rule 1: find configured computer with serial number = "whatever" and has-config = true.
rule 2: find not-config computer with serial number = "whatever and has-config = true.
rule 3: find configured computer with serial number = "whatever" and has-config = false.
rule 4: find not-config computer with serial number = "whatever" and has-config = false.
rule 5: find all computer with serial number = "whatever" and has-config = true.
rule 6: find all computer with serial number = "whatever" and has-config = false.

и так далее ...

Некоторые из этих правил, которые могут быть реализованы, кажутся неверными. Правило 2 и правило 3, похоже, противоречат друг другу. Правило 5 и Правило 6 что делают? Это правильно?

Потому что вы реализовали объект, который нарушает SRP. Первый шаг - отделить построитель запросов от средства отображения данных. Создайте объект запроса FI, а затем передайте его в преобразователь.

Теперь вы можете протестировать FindComputers , убедившись, что объект запроса FI отправлен в преобразователь данных. Поскольку теперь вы можете создать объект запроса FI, вы можете его протестировать. И вы можете проверить, что средство отображения данных использует объект запроса.

Что делать, если в будущем вы захотите находить компьютеры по местоположению? Если вы сохраните тот же код, что и написали, вам придется добавить метод FindByLocation и, прежде чем вы это узнаете, у вас будет объект бога. вонючий!

3
ответ дан 3 November 2019 в 07:48
поделиться

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

1
ответ дан 3 November 2019 в 07:48
поделиться

Я бы сделал 2 + 3. Предполагая, что плавные интерфейсы на самом деле являются интерфейсами, их должно быть относительно просто имитировать. Просто поймите, что каждый шаг в цепочке вызовов, вероятно, должен возвращать новый фиктивный объект, который, в свою очередь, ожидает следующего вызова в цепочке.

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

0
ответ дан 3 November 2019 в 07:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: