Как я могу протестировать функцию обратного вызова Javascript транзакции AJAX с помощью RSpec / Capybara / Ruby? - PullRequest
3 голосов
/ 06 августа 2020

Я использую RSpec / Capybara и chrome / firefox для тестирования.

Я использую iframe PayPal / Javascript поток покупок.

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

Вот что PayPal функция выглядит так:

function paypal_button(plan_id, container_id) {
  paypal.Buttons({
    createSubscription: function(data, actions) {
      return actions.subscription.create({
        'plan_id': plan_id
      });
    },
    onCancel: function (data) {
      console.log("canceled");
    },
    onError: function (err) {
      console.log("error")
    },
    onApprove: function(data, actions) {
        stuff
    }
  }).render(container_id);
}

В приведенном выше коде stuff вносит ряд изменений в DOM, включая отправку формы. Я не думаю, что смогу перехватить Javascript перед отправкой формы, поэтому мне просто нужно понять, что я могу сделать в тесте RSpe c, чтобы сработала эта функция onApprove.

onApprove задокументировано здесь: https://developer.paypal.com/docs/checkout/integrate/#5 -capture-the-transaction

Я все делаю неправильно? Должен ли я делать что-то совершенно другое для тестирования этого уровня на странице Javascript?

...