2013-09-17 1 views
4

Я разрабатываю RESTful Node.js API (express + mongoose) Этот API вызывает сторонний Oauth API (google, facebook, без разницы).Node.js: Как протестировать мой API, высмеивая сторонний API, называемый моим API

Я был доволен настройкой автоматического тестирования с запросом mocha + chai + до сих пор, но у меня возникли проблемы с издевательством над сторонним API для проверки маршрута (моего API), который его вызывает. Я пробовал использовать нок, но это не работает для моего использования.

Для запуска моих тестов я запускаю свой API (npm start), а на другой вкладке запускаю тестовый набор (npm test). В тестовом наборе используется запрос для проверки API через HTTP. Следовательно, я думаю, что нок здесь не работает, потому что он насмехается над http в процессе «набора тестов», а не в процессе «API».

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

Я бы очень хотел, чтобы я не покидал эту гигантскую дыру в своем тестовом покрытии, поэтому любые советы были бы высоко оценены!

+0

Вы когда-нибудь придумывали решение? Я в подобной ситуации и хотел бы решить. Удивительно, как трудно найти даже обсуждение этой темы! – ChrisC

+0

На самом деле я что-то придумал, я отправлю его завтра. Я не знаю, что это современное состояние, но это делает работу. – saintmac

+0

Удивительный! Оцените ответ и с нетерпением ждем вашего решения. – ChrisC

ответ

2

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

Первый шаг был запустить мое приложение из другого файла, starter.coffee, что по существу выглядит следующим образом:

# This file starts the API locally 
require './test/mocks/google_mock' 
require './app' 

Итак, чтобы начать свой сервер для тестов, вместо из coffee app.coffee, я бы сделал coffee starter.coffee.

Файл google_mock.coffee издевается над API Google перед запуском приложения из файла app.coffee. Для этого я использую nock! пакет.

В google_mock.coffee файлах выглядят следующим образом:

nock = require 'nock' 
# mocking up google api 
googleapis = nock('https://www.googleapis.com') 
    .get('/userinfo/v2/me') 
    .reply(401) 

с намного большим количеством линий для насмешливых других вызовов API Google.

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