Детокс с Mirage. js [Mock API Call] React-Native - PullRequest
1 голос
/ 21 апреля 2020

Я работаю над некоторыми тестами, использующими Detox для моего приложения React-Native, один из них - поток, в котором мне нужно проверить, защищен ли сеанс пользователя. Если нет, я отправляю код подтверждения SMS.

Тест: Успешно смоделировать вызов POST API api/sessions/:sessionId, {code : 123456}

Проблема: Mirage не перехватывает вызов, поэтому, конечно, моя сага возвращает ошибку для поддельного кода 123456, где я хочу вместо Mirage. JS вернуть true, чтобы продолжить поток.

Вот файл (file.spec.js):

import { Server } from "miragejs"
import { makeServer } from "./server";
let server; 

beforeEach(() => {
    server = makeServer({ environment: "development" });
})

afterEach(() => {
    server.shutdown()
})

describe('SecureFlow',  () => {
    it("should do nav to a project and start Investment Flow", async () => {
        server.get("https://random-api.eu/sessions/:sessionId", () => {
            return new Response( 200, {}, { ok: true });
          });
        await basicNavigation(); //randomNavigation until the secure part (Screen)
        await element(by.id('Accept-andLend')).tap();
        await element(by.id('textInput-SMSCode')).typeText("123456"); 
    })
})   

server.js

import { Server, Model, Factory } from "miragejs";

export function makeServer({ environment = "development" } = {}) {
  let server = new Server({
    environment,
    models: {

    },
    routes() {
      this.post("https://random-api.eu/sessions/:sessionId", schema => {
        return [{ok: true}];
      });
    }
  });

  return server;
}
...