2014-02-21 3 views
0

У меня вопрос о том, как реализовать функциональные тесты behit/mink. В моем веб-приложении у меня есть пользователи, которые могут получить доступ к некоторым листам данных, если у них есть требуемые учетные данные (т. Е. Нет доступа/чтения/записи).Стратегия Behat/Mink для тестирования с контекстами

Я хочу, чтобы проверить все возможные контексты с помощью behit/mink. Вопрос в том, что является лучшей практикой для такого тестирования? Некоторые разработчики сказали мне, что мне нужно создать сценарий для каждого типа пользователей, которых я хотел бы использовать. Затем мне придется использовать пользователя, которого я создал в других тестах. Но я не очень уверен в этой идее: я считаю, что она вводит связь между моими испытаниями. Если тест, который создает пользователя, терпит неудачу, то тест, который проверяет доступ к моей таблице данных для этого конкретного пользователя, также завершится неудачей.

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

Есть ли у вас какие-либо предложения/идеи?

ответ

1

Привет user3333860 (что имя пользователя XD),

Я не эксперт в области тестирования и в эти дни, я больше на Ruby/RSpec, но лично я считаю, что оба решения хороши и используются.

Используйте эту функцию, чтобы создать своего пользователя: Если ваш тест для создания пользователя терпит неудачу, это может означать, что ваш рефакторинг создания пользователя также испорчен. Так что факт, что другие тесты терпят неудачу, не кажется мне недостатком. Но я понимаю, что вы не хотите иметь связь между вашими испытаниями. Главное, что ваш тест выполнялся в статическом порядке или они выполняются случайным образом (т. Е. Rspec не всегда запускает тесты в одном порядке), и вы готовы иметь один и тот же тестовый запуск несколько раз в разных функциях, что ваши другие тесты могут быть успешно завершены.

Использование светильников: Ну, это также хорошее и популярное решение (фактически, я использую), и вы уже точно определяете тот факт, что вам придется поддерживать.

В конце концов, я бы пути сантехники только с инструментами, помогая как FactoryGirl, которая поможет вам сохранить ваши объекты шаблонов (здесь это PHP версия этого) https://github.com/breerly/factory-girl-php

Надеюсь, что я помог с дилеммой ,

Смежные вопросы