Тестирование приложения Facebook с помощью PHPUnit - PullRequest
2 голосов
/ 08 мая 2011

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

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

Так что я надеюсь, что кто-то может объяснить мне, как это можно сделать, или указать на какой-то другой подход для автоматического тестирования приложений Facebook.

Хорошего дня:)

Ответы [ 3 ]

4 голосов
/ 09 мая 2011

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

OneВопрос, который я хотел бы задать здесь: как вы ожидаете детерминистически (и быстро!) протестировать ваше приложение на основе различных структур социального графа?Я бы порекомендовал выполнить эту работу, чтобы создать внутреннее представление социального графа в вашем приложении, чтобы ваша бизнес-логика работала против этого представления вместо того, чтобы напрямую общаться с FB.Тогда у вас будет отдельный компонент, который будет генерировать это внутреннее представление графика через API Facebook.

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

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

1 голос
/ 09 мая 2011

Используя фиктивные данные, вы сохраняете все постоянным, кроме тестируемого кода. Используя данные реального социального графика, вы одновременно тестируете свой код и API Facebook.

Если ваш модульный тест не пройден, как узнать, что ваш код или код Facebook не работает?

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

0 голосов
/ 08 мая 2011

Если вы хотите использовать Facebook (в отличие от фиктивного объекта), вам следует подумать о транзакции аутентификации, выполняемой вашим браузером, а затем внедрить этот же путь в модульном тесте.

Например, когда вы отправляете запрос http на https://www.facebook.com/dialog/oauth?client_id=..., если все идет хорошо, вы должны получить ответ 302 (перенаправление), который будет содержать заголовок Location. Затем вы можете следовать заголовку «Местоположение» и т. Д., Продолжая идти по пути, пока не дойдете до нужной страницы. Вы можете сделать все это в коде вашего сервера, используя сокет или библиотеку типа cURL.

...