在量角器中测试模板?

Law*_*eld 13 javascript testing end-to-end angularjs protractor

编写应该应用于站点中每个页面的断言的最佳方法是什么?

我正在测试我的网站页脚中是否存在元素,因此该元素应该存在于所有页面上.

我正在考虑编写一个单独的文件来测试网站的模板元素,然后将其包含在所有规范中.虽然看起来好像没有其他人这样做?

ale*_*cxe 3

首先,为了编写更清晰的测试并更好地了解目标站点的组成部分,请应用页面对象模式并将网页的各个部分拆分为不同的页面对象。例如,footerheader可以而且应该是单独的页面对象,可以在站点的不同网页中重复使用。

有关该主题的更多信息:


据我理解这个问题,为了遵循“DRY”原则,您需要某种“共享”茉莉花规范,您可以定义一次并在多个测试套件中运行

这正是DRYing up Jasmine Specs with Shared Behaviour一文所描述的内容。这个想法相当简单 - 在您的测试套件中定义一个函数并从其他测试套件中调用它。例子:

  • 创建一个接受上下文(页面对象)的函数,并包含页脚特定的可重用测试:

    function testFooter(footer) {
    
        describe("(shared)", function () {
    
            describe("should show footer with necessary information", function () {
                it("should show copyright", function () {
                    expect(footer.copyright.getText()).toEqual('Copyright 2014');
                });
            });
    
        });
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 从传递上下文 - 页脚页面对象的其他测试套件中调用该函数:

    var FooterPage = require('./footer.po.js');
    
    describe('Contacts page', function () {
        var scope = {};
    
        beforeEach(function () {
            browser.get('/contacts/');
            browser.waitForAngular();
            scope.page = new ContactsPage();
        });
    
        // other contacts page specific suites 
        // ...
    
        testFooter(new FooterPage());
    
    });
    
    Run Code Online (Sandbox Code Playgroud)

您可能需要调整和改进代码才能使其正常工作,但想法保持不变:定义一次并重用。传递页面对象只会使其更加干净和透明。

另请参阅: