2015-08-28 4 views
1

Я пишу тесты для своего приложения Backbone, которое использует Stripe. Я использую mocha-phantomjs для запуска тестов. В моем файле index.html я ha <script src="https://js.stripe.com/v2/" type="text/javascript"></script>, чтобы получить код для Stripe. Однако, когда я запускаю тесты, я получаю ошибку: ReferenceError: Can't find variable: Stripe, что имеет смысл, потому что я не выполняю команду для тестов с сертификатом ssl.Создайте Mock для Stripe или используйте объект Stub on Stripe?

Я получил его, создав локальный файл js и скопировав в него нужный код stripe's, тем самым исключив необходимость в сертификате ssl и моих тестах.

Однако мой вопрос в том, является ли это лучшей практикой?

Должен ли я достаточно создать sinon макет объекта Stripe и использовать его вместо или это больше смысла тупикового на Stripe объект, чтобы предотвратить любые вызовы, прилагаемый к Stripe API?

ответ

2

Я думаю, что самое лучшее, что нужно иметь в виду, это разделение проблем.

Stripe - это сторонняя услуга, поэтому я не думаю, что было бы самым разумным выбором использовать такую ​​услугу в модульных тестах.

Это блок-тесты - предположительно для ваших основных систем; и поэтому тесты должны строго тестировать только код контроллера.

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

+0

@hyprstack Да, макет - лучший подход ... тем более, что он не позволит реальным Stripe.js совершать какие-либо вызовы в API Stripe. –

+0

Привет, Тони. Я создал макет с sinon, выполнив 'stripeMock = sinon.mock (Stripe);' и присваивая 'var Stripe = {method: function() {}};' Однако, когда я запускаю тесты, он все еще жалуется, что он не может найдите 'variable Stripe'. Мне нужно создать объект, если этого не существует в коде, который я тестирую? – hyprstack

+0

@hyprstack эй, да точно - это должно быть ОК, если вы определяете переменную с/без объекта. –

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