Как написать хороший тестовый модуль / функциональный тест для такого случая - PullRequest
0 голосов
/ 25 мая 2018

Эта тема скорее об идее, а не о готовом коде.

В настоящее время я делаю тесты Dusk (Selenium реализованы в Laravel) для приложения.У меня есть функция, которая возвращает:

Поиск пользователей, которым нравится синий цвет.

Это, конечно, немного сложнее (отношения, многие модели и т. Д.).Я написал два теста прямо сейчас.

  • Поиск пользователей, которым нравится цвет abc .Это нравится только моим тестовым пользователям, поэтому я знаю, какой результат я должен получить.Я делаю сравнение между запросом базы данных и int.

  • Поиск пользователей, которым нравится цвет (случайный из доступных цветов) в базе данных.Это та же логика, что и в предыдущем, с настоящим именем цвета.

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

Я прошу несколько идей, как и что я должен проверить, чтобы убедиться, что функциональность возвращает правильный результат.

1 Ответ

0 голосов
/ 25 мая 2018

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

Таким образом, ваш тест должен выглядеть следующим образом:

class SearchUserTest extends TestCase
{
    // Refresh migrations before each test
    use RefreshDatabase;

    public function testCanFindUsersThatLikeSomeColor()
    {
        // Arrange
        // Create $user1 who likes color blue
        // Create $user2 who likes color green
        // Create $user3 who doesn't like any color

        // Act
        // Make your search request to find users who like color blue

        // Assert
        // Assert response has $user1 and doesn't have $user2 and $user3

    }

}
...