【问题标题】:Testing Angular2 components with transitive dependencies使用传递依赖测试 Angular2 组件
【发布时间】:2017-07-23 18:22:33
【问题描述】:

我刚开始使用 Angular2,但我尝试测试我编写的每个组件。

当我编写组件测试时,我必须初始化 TestBed,以便被测组件的所有(传递)依赖关系都得到解决。

现在我能想到三种方法

  1. 导入包含被测组件的整个模块 - 它应该声明或导入所有必需的依赖项
  2. 在测试代码中显式声明所有依赖项
  3. 模拟所有依赖项 - 因此它们没有自己的依赖项

当我需要模拟已经在主模块中声明的东西时,我认为第一个解决方案可能会导致问题。第二个要求我在尝试向组件添加任何新依赖项时手动更改所有依赖测试。第三个我没有测试,所以我不知道它是否可行。

处理这个问题的最佳方法是什么?

【问题讨论】:

    标签: unit-testing angular


    【解决方案1】:

    我使用与原始相同的选择器和输入实现了依赖组件的模拟,但没有逻辑。

    这样我可以单独测试我的组件 - 检查它是否正确使用依赖组件,但无需担心任何传递依赖和其他实现细节。

    我的灵感来自:angular2 test, how do I mock sub component

    【讨论】:

    • 虽然这是一种有效的方法,但它有很多限制,因为您只是在模拟标签而不是替换类实现本身。这样的事情是行不通的。 @ViewChild(SubComponent) sc; then later call sc.callFn()。 Testbed 注入器永远找不到这个类,因为模拟实现有不同的类名。
    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 2017-09-17
    • 1970-01-01
    • 2018-03-03
    • 2016-05-30
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    相关资源
    最近更新 更多