Добрый день , имеется REST API написанное на yii2 , было дано задание написать для каждого метода API тест , проблема в том что я не могу понять что считать эталонными данными для сравнения с ответом , так-как написал тест на вызов какого либо метода API и проверки что код ответа 200 , и тип ответа JSON , и сверки всех типов данных в JSON объекте , было сказано руководителем что мало , и нужно сверять с данными, но я думаю делать статические данные через фикстуры это не верно , так как их может быть довольно много (например в методе который получает все продукты , которых может быть много) , вытягивать из БД , тоже кажется не правильным подходом , так как в моделе может быть какая либо бизнес логика , и тогда её нужно переводить в код теста ?
Moskus, да завтра так и сделаю , просто прочитал пару статей , ответов на SO , и все пишут что тестируют код ответа + что это объект JSON. Может это просто не правильный подход , например каждую функцию безнес логики тестировать Unit тестами , а API тесты как в выше и описал ?
izac, это зависит от того, что является предметом тестов и что считается частью API, а что - нет. Вы вот написали тест для составляющих, касающихся самого общего уровня: запрос-ответ и формат ответа. А ваш начальник, возможно, считает, что нужно тестировать еще содержимое ответа (логику). Это не ситуация, когда прав только кто-то один, но чтобы знать, что делать, нужно знать, какова цель. Тут вам никто мысли начальника не прочитает.
Moskus, Полностью согласен , просто не могу понять где брать тестовые данные , если например я задам их статично , то при добавлении новых данный они будут != статичным , а если же я буду брать динамически и эту "логику" буду воспроизводить в тесте где , например , допущена ошибка тогда тест её покажет.
izac, возможно начальник хочет видеть тестирование соответствия модели данных выдаваемому ответу, может проверку типов свойств объекта, который был возвращен, возможно сравнение явно выдернутых из бд случайных записей на адекватность ответа апи по ним, тут в действительности не стоит пытаться удивить босса, стоит попросить четкую постановку задачи.
ЗЫ: тестирование модели данных притянуто за уши, так как по логике вещей полноценность и достоверность данных должна контролироваться на этапе добавления данных.
Но думаю мои идеи понятны, удачи.
я думаю делать статические данные через фикстуры это не верно , так как их может быть довольно много (например в методе который получает все продукты , которых может быть много) , вытягивать из БД , тоже кажется не правильным подходом