【问题标题】:Mock angular2 service in protractor tests在量角器测试中模拟 angular2 服务
【发布时间】:2017-10-24 23:24:39
【问题描述】:

我想在量角器测试规范的范围内有效地提供 angular2 服务的替代实现。我不是要测试服务,所以 MockBackend 提供的价值不大。

在规范运行之前,我是否可以访问注入器或注册提供程序?这种东西

{provide: MyService, useClass: MyMockedService}

只是让 MyMockedService 具有返回硬编码值的相同方法?

我知道如何在单元测试中做到这一点,这是专门的量角器 e2e 测试。再说一次,我不是要测试服务……我不相信 MockBackend 在这里有帮助。

【问题讨论】:

    标签: angular protractor


    【解决方案1】:

    您可以为量角器测试使用不同的环境,然后在注册服务的模块中添加检查。使用抽象超类,您可以在 Angular 中使用 DI 根据环境注入不同的值。类似这样:

    environment.e2eMode ? {provide: AbstractService, useClass: ServiceMock} : {provide: AbstractService, useClass: ServiceImpl},
    

    但您必须注意您的 MockService 不会出现在生产代码中。

    【讨论】:

      【解决方案2】:

      您听说过/尝试过ng-Apimock。我将它用于构建 Angular 2+ 应用程序的客户,它工作正常。它用于本地开发(有一个简单的 UI 可以为每个服务选择不同的场景)并在量角器测试期间使用它。创建响应很容易,您可以使用动态定义的全局变量。

      它可以用于不同的配置(Angular cli、Angular Seed、grunt、gulp、..)。

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-14
        • 2016-03-01
        • 2020-06-24
        • 2015-12-26
        • 1970-01-01
        • 2021-04-26
        • 2016-01-09
        • 2020-03-27
        相关资源
        最近更新 更多