`nock.js` для проверки ответов на основе ввода - PullRequest
0 голосов
/ 15 октября 2019

У меня та же конечная точка API, которая будет возвращать разные ответы в зависимости от получаемых данных. Я пытаюсь смоделировать API для моих тестов пользовательского интерфейса.

Итак, в основном в моем тесте пользовательского интерфейса:

нажмите кнопку в пользовательском интерфейсе ---> вызывает фиктивный API в бэкэнде с полезной нагрузкой 1 ----> фиктивный API дает ответ 1 (и это входная полезная нагрузка) ---> вызывает тот же фиктивный API ---> получить ответ 2 -> действие пользовательского интерфейса происходит на основе ответа

Мне нужно смоделировать ответ API, и вот чтоЯ попытался

    // button to click that triggers the API endpoint 
    $('action').click();

    // this is the mock API that checks if the input payload has the word `INPUT1`
    // reponse expected from the dummy API is stored in  `response1.xml` 

    let scope = nock('http://localhost:4002')
        .post('/', /INPUT1\\/)
        .reply(200, (uri, requestBody) => {
            console.log('uri', uri)
            console.log('requestbody', requestBody)
            fs.readFile(join(process.cwd(), 'test', 'response1.xml')) 
        })


    // dummy  API called again with prev nock response
    // input payload is data in file `response1.xml` 
    // should check if the input payload has the word `INPUT2\`
    // mocked output for the API is in file response2.xml

    nock('http://localhost:4002')
        .post('/', /INPUT2\\/)
        .reply(200, (uri, requestBody) => {
            fs.readFile(join(process.cwd(), 'test/', 'response2.xml')) 
        })
    // when the app sees response response2.xml, "done" button appears on screen
    // click on `done` button
    $('#done).click

Когда я попробовал это, он не смог сказать API not reachable. Не уверен, правильно ли я использую API. API, который я пытаюсь смоделировать, является фиктивным API. Это возможно с nock?

...