Транспортир жасмина ловить исключение при ошибке / ожидаемом сбое - PullRequest
0 голосов
/ 07 июня 2019

Мы используем транспортир с жасминовым каркасом.Ниже приведен наш файл спецификаций

describe('Projects CRUD', function () {
	var projectsPage = require('../pages/Projects_Page.js');
    var commonFunctions = require('../utils/CommonFunctions.js');
    
    it('Rename Project - Duplicate name check', function () {
    	try{
    		projectsPage.clickProjectsTab();
            projectsPage.selectProject('AutoProject1');
            projectsPage.projectBreadcrumbChevron.click();
            projectsPage.editProjectIcon.click();
            projectsPage.editProjectUpdateButton.click();
            expect(projectsPage.duplicateProjectError.getText()).toEqual('A Project with that name already exists');
            projectsPage.editProjectCancelButton.click()
            commonFunctions.updateResult(164378 , "Project duplicate name checked with same Org unit successfully", "p");
    	}catch(err){
    		console.log(err);
    		commonFunctions.updateResult(164378 , err, "f");
    	}
     });
});

Наше требование состоит в том, чтобы он выполнял блок catch, если какой-либо из этапов не выполняется в промежутке или даже ожидается, что условие не выполнено в блоке 'it'.В настоящее время для любого исключения его не достичь, чтобы поймать блок.После трассировки ошибки

Failures:
 1) Projects CRUD Rename Project - Duplicate name check
 Message:
   Failed: project not found
 Stack:
 Error: project not found
    at E:\JavaScriptWorkSpace\UIAutomation\pages\Projects_Page.js:39:23
    at ManagedPromise.invokeCallback_ (C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1376:14)
    at TaskQueue.execute_ (C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3084:14)
    at TaskQueue.executeNext_ (C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3067:27)
    at asyncRun (C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2927:27)
    at C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:668:7
    at process._tickCallback (internal/process/next_tick.js:68:7)
From: Task: Run it("Rename Project - Duplicate name check") in control flow
    at UserContext.<anonymous> (C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:94:19)
    at C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:64:48
    at ControlFlow.emit (C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\events.js:62:21)
    at ControlFlow.shutdown_ (C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2674:10)
    at shutdownTask_.MicroTask (C:\Users\abc\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2599:53)
From asynchronous test:
Error
    at Suite.<anonymous> (E:\JavaScriptWorkSpace\UIAutomation\specs\ProjectsCrud.js:6:5)
    at Object.<anonymous> (E:\JavaScriptWorkSpace\UIAutomation\specs\ProjectsCrud.js:1:63)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)

1 спецификация, 1 сбой Завершено за 30,699 секунд

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Если я правильно понимаю поток выполнения, ваша ошибка возникает в первой строке после блока describe (или даже раньше) прямо здесь

describe('Projects CRUD', function () {
    error is here ----> var projectsPage = require('../pages/Projects_Page.js');
    var commonFunctions = require('../utils/CommonFunctions.js');

перед блоком try / catch, и поэтому эта ошибка не может бытьблок catch catch.

А из сообщения об ошибке в файле Projects_Page.js что-то не так, возможно, отсутствует require/import или опечатка.

В качестве примечания читайте об асинхронности / ожидании в Документация Proctractor , поскольку поток управления веб-драйвером, насколько я знаю, по умолчанию уже отключен.

0 голосов
/ 10 июня 2019

Попробуйте ниже

it('Rename Project - Duplicate name check', async () => {
    try{
        await projectsPage.clickProjectsTab();
        await projectsPage.selectProject('AutoProject1');
        await projectsPage.projectBreadcrumbChevron.click();
        await projectsPage.editProjectIcon.click();
        await projectsPage.editProjectUpdateButton.click();
        expect(await projectsPage.duplicateProjectError.getText()).toEqual('A Project with that name already exists');
        await projectsPage.editProjectCancelButton.click();
        await commonFunctions.updateResult(164378 , "Project duplicate name checked with same Org unit successfully", "p");
    }catch(err){
        await console.log(err);
        await commonFunctions.updateResult(164378 , err, "f");
    }
 });

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...