【问题标题】:AngularJS directive testing with protractor使用量角器进行 AngularJS 指令测试
【发布时间】:2014-04-28 21:42:18
【问题描述】:

有什么方法可以用 Protractor/WebDriver 进行单元测试吗?我最理想的做法是隔离单个指令/组件,模拟它的依赖关系,注入各种数据,然后在一堆浏览器中使用 Protractor 遍历它。

有没有办法做到这一点?

【问题讨论】:

    标签: angularjs unit-testing protractor


    【解决方案1】:

    量角器(更广泛地说,Selenium)通常用于自动化非技术最终用户能够自己执行的测试类型。话虽如此,有时在服务器上模拟各种错误情况可能很有用。你有几个选择:

    1. onPrepare 脚本:使用onPrepare 脚本尽可能多地完成后端设置工作,如果可以提前这样做的话。在量角器配置文件 (see sample here) 中设置 onPrepare 属性以指向您的准备脚本,您可以在其中设置数据库中的记录、创建文件或您可能需要执行的任何其他操作。

    2. 使用protractor.addMockModule: 这允许您通过在调用 Protractor.get 时在 Angular 之前添加要加载的模块来模拟后端 API。有关示例,请参阅博客文章(搜索“超越基础”):
      http://product.moveline.com/testing-angular-apps-end-to-end-with-protractor.html

    3. 在服务器上配置仅测试路由: 作为最后的手段,您可以在服务器上配置一些只能在执行任何后端处理的开发环境中访问的路由从您的端到端测试中需要。例如,如果您将 Node.js 与 Express.js 一起使用,您可能会执行以下操作。

    仅测试路线:

    // Store your server-side e2e methods in this file
    var e2eBackend = require('./test/e2eBackend');
    
    if (app.get('env') === "development") {
        app.get('/e2e/simulateCrash', e2eBackend.simulateCrash);
        // etc.
    }
    

    【讨论】:

      【解决方案2】:

      Protractor 主要用于 e2e 测试。从最终用户的角度进行测试。 您可以使用 jasmine 框架进行单元测试,并且量角器 e2e 测试也支持 jasmine。

      【讨论】:

      • 我现在也在使用 Karma(与 Jasmine)来测试所有内容,但就像你说的那样,这是单元测试,而不是从用户的角度来看。我想做的是从用户的角度(量角器)进行测试,但控制正在测试的组件的状态。在 e2e 测试中模拟所有错误条件并不总是那么容易。如何测试处理服务器故障或互联网连接中断的特定小部件?
      猜你喜欢
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多