【问题标题】:Testing templates in Protractor?在量角器中测试模板?
【发布时间】:2014-12-05 16:09:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript angularjs testing protractor end-to-end


    【解决方案1】:

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

    更多主题:


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

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

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

      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');
                  });
              });
      
          });
      }
      
    • 从传递上下文的其他测试套件调用该函数 - 页脚页面对象:

      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());
      
      });
      

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

    另见:

    【讨论】:

    【解决方案2】:

    我使用规范的方式是规范谈论某些​​场景,而不总是关于特定页面,所以它不是“一个规范,一页”。如果规范中的条件不能影响元素的存在,我会认为在许多规范中测试相同的东西是不好的做法。

    总的来说,我认为甚至没有必要测试这样的东西。我宁愿考虑您的元素是否有可能不存在,或者是否有一些条件会影响它,并测试这些情况。

    如果您坚持对此进行测试(例如,有不共享内容的静态页面,并且您的元素是手动添加的,您必须确定),我会创建一个规范来测试该元素的存在并在在那里,定义要测试的页面列表。因此,该测试将涵盖对该元素在所有列出的页面上的存在情况的测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-15
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多