Polly.js + selenium-webdriver: как заблокировать / перехватить запросы XHR - PullRequest
0 голосов
/ 07 сентября 2018

Я запускаю тесты селена для приложения реагирования и пытаюсь заглушить свои axios (XHR) запросы. Я думаю, что я близко, но кажется, что чего-то не хватает. Я бегу polly l - слушаю localhost:3000 - и тогда мой тест выглядит так:

import { Polly } from '@pollyjs/core'
import XHRAdapter from '@pollyjs/adapter-xhr'
import LocalStoragePersister from '@pollyjs/persister-local-storage';
import webdriver from 'selenium-webdriver'
const { By, Key, until } = webdriver

Polly.register(XHRAdapter)
Polly.register(LocalStoragePersister);

describe('Loggin in', () => {

  const polly = new Polly('Sign In', {
    adapters: ['xhr'],
    persister: 'local-storage'
  });
  const { server } = polly;

  polly.configure({
    persisterOptions: {
      'local-storage': {
        key: '__pollyjs__'
      }
    }
  });

  server.get("http://localhost:3000/dashboard").passthrough()

  server.get('http://localhost:3000/api/users/me').intercept((req, res) => {
    res.status(200);
    res.json({});
  });
  server.put('http://localhost:3000/api/users/login').intercept((req, res) => {
    res.status(200);
    res.json({});
  });


  it('renders correctly', async() => {
    var chromeCapabilities = webdriver.Capabilities.chrome();
    var chromeOptions = {
      //'args': ['--headless']
      'args': ['--auto-open-devtools-for-tabs']
    };
    chromeCapabilities.set('chromeOptions', chromeOptions);
    const driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build();

    jasmine.Ajax.stubRequest('/dashboard').andReturn({
      "status": 200
    });

    await driver.get('http://localhost:3000/dashboard')

    await driver.getCurrentUrl().then((url) => {
      expect(url).toEqual("http://localhost:3000/dashboard")
    })

    await polly.stop();
    driver.quit()
  })

})

Таким образом, идея заключается в том, что «/ dashboard» должен быть пропущен и вообще не перехватываться, в то время как запросы API (/api/users/me и /api/users/login) должны быть заглушены с помощью polly. Что происходит, так это то, что при приземлении на / приборную панель я получаю 404 назад, и Полли, похоже, вообще не проходит. Я правильно здесь понял?

Cannot GET /dashboard

...