【问题标题】:Angular tests fails with ng e2e but pass with protractor conf.jsAngular 测试因 ng e2e 失败,但使用量角器 conf.js 通过
【发布时间】:2020-04-02 06:57:44
【问题描述】:

在为 Angular 应用程序进行测试自动化时,我遇到了一个问题,即每当我尝试使用 Angular 命令ng e2e 运行测试套件时,所有测试都会失败。量角器命令protractor conf.js 通过了相同的测试。我想问一下这种奇怪行为的原因。提供了规范。 谢谢

import { AddMemberClass } from '../../pages/add-member/add-member.page';
import { LoginPage } from '../../pages/login/login.page';
import { browser, promise, by } from 'protractor';


fdescribe('Add Member as Admin',()=>{

    let addMemeber: AddMemberClass;
    let login : LoginPage;

    beforeAll(()=>{
        login = new LoginPage();
        addMemeber = new AddMemberClass();
        return new Promise((resolve)=>{
            login.navigateTo().then(()=>{
                login.getEmailInput().sendKeys('something@gmail.com');
                login.getPasswordInput().sendKeys('13235');
                login.getLoginButton().click().then(()=>{
                    setTimeout(()=>{
                        expect(browser.getCurrentUrl()).toContain('organization').then(()=>{
                            resolve();
                            });
                    },30000);
                });
            });
        });    
    }); 
    
    it('should login successfully', ()=>{
        return addMemeber.getMemberMenu().click().then(()=>{
            console.log('test1');
            return addMemeber.getAddMemberSubMenu().click().then(()=>{
                 console.log('inside test 1');
                return  new Promise((resolve)=>{
                    setTimeout(()=>{
                        expect(browser.getCurrentUrl()).toContain('directregistration').then(()=>{
                        resolve();
                        });
                    },30000)
                })
            })
        })
        
    });    
   
    it('should check member Menu on main page',()=>{
        return new Promise((resolve,reject)=>{
           setTimeout(()=>{
                console.log('Inside test 2 timeout');
                expect(addMemeber.getMemberMenu().isPresent()).toBe(true);
                resolve();
            },5000)    
        });     
    });

  
    })

});

【问题讨论】:

  • 如果您向我们提供准确的错误信息,那就太好了
  • 问题是你的 setTimeout 和 Promises。这不是应该做的:)
  • @LuninRoman 错误是 jasmine.DEFAULT_TIMEOUT
  • @PierreDuc 你能解释一下吗?将不胜感激
  • @Analyst 我建议你看看angular.io/guide/testing。你应该使用async。您收到错误是因为默认超时远小于您希望测试等待的 30 秒。

标签: angular testing automation jasmine e2e-testing


【解决方案1】:

我面临的问题是 ng e2e 它首先服务于应用程序,然后运行 ​​e2e 测试用例。运行命令 protractor conf.js,它没有被提供,产生问题并且所有测试用例都失败

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多