Testcafe: Как сделать ошибку в ответе 4xx или 5xx? - PullRequest
0 голосов
/ 20 сентября 2018

Я работаю над устаревшим приложением, которое делает много звонков на внешние источники.Я пытаюсь провести рефакторинг этого приложения, и я написал testcafe тесты, чтобы сообщить мне, когда я допустил ошибку.Я НЕ запускаю свои тесты с --skip-js-errors, но когда я получаю 404 ошибки и консоль печатает это:

enter image description here

тест не выполняетсяне останавливайсяЯ бы хотел, чтобы такие ошибки были такими, о которых мне сообщили. Как заставить сетевые ответы 4xx и 5xx не пройти тест-кафе? Я использую угловой 1.2, если это имеет значение.Если бы я мог, я бы изменил все удаленные вызовы, чтобы выдать исключение на 4xx или 5xx, но это устаревший код, который я не понимаю, и я уверен, что это нарушит функцию.

1 Ответ

0 голосов
/ 21 сентября 2018

Я предлагаю вам продлить RequestLogger , чтобы проверить запрос.Вы можете выдать ошибку в зависимости от статуса запроса.Например:

import EventEmitter from 'events';                                                                                                           
import { RequestHook } from 'testcafe';                                                                                                      

fixture `test`                                                                                                                               
    .page('https://testcafe.devexpress.com/Details2/')                                                                                       

class FailedRequestsLogger extends RequestHook {                                                                                             
    constructor (...args) {                                                                                                                  
        super(...args);                                                                                                                      

        this.events = new EventEmitter();                                                                                                    
        this.failedRequestPromise = new Promise(resolve => this.events.once('failed-request', resolve));                                     
    }                                                                                                                                        

    onRequest (request) {                                                                                                                    
    }                                                                                                                                        

    onResponse (response) {                                                                                                                  
        if (response.statusCode >= 400)                                                                                                      
            this.events.emit('failed-request', response.statusCode);                                                                         
    }                                                                                                                                        

    waitForFailedRequest (action) {                                                                                                          
        return Promise.race([                                                                                                                
                action(),                                                                                                                    
                this.failedRequestPromise.then(statusCode => Promise.reject(new Error(`Request failed with the ${statusCode} status code`))) 
        ])                                                                                                                                   
    }                                                                                                                                        
}                                                                                                                                            

const logger = new FailedRequestsLogger();                                                                                                   

test.requestHooks(logger)('test', async t => {                                                                                               
    await logger.waitForFailedRequest(async () => {                                                                                          
        await t.click('body');                                                                                                              
        await t.wait(10000);                                                                                                                
    });                                                                                                                                      
});  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...