问题标签 [testbed]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
11416 浏览

unit-testing - 带有模拟的Angular 2 TestBed

我正在尝试测试使用其他服务的组件。我想通过为服务提供模拟来隔离组件。在 RC5 之前,我可以简单地使用addproviders它现在已弃用并将被下一个 RC 删除。相反,我必须使用TestBed. 当我出于某种原因提供模拟角度时,请继续寻找模拟所依赖的服务。并抛出一个DI exception. 当我提供所有依赖项时,测试工作,但我不想为每个测试套件重复自己。这打破了基本的面向对象原则。我的测试套件:

角 2.0.0-RC5

0 投票
2 回答
10068 浏览

angular - 使用 TestBed 覆盖组件

我有MainComponentChildComponentA用作@ViewChild. MainComponent正在调用一个方法ChildComponentA

我想写一个单元测试用例模拟ChildComponentA。我如何使用TestBed(在 Angular 2 RC5 中)来做到这一点?

在我使用之前overrideDirective(MainComponentName, ChildComponentA, MockChildComponentA);是否有与此等效的 using TestBed

我尝试使用

它只是设置模板,但我也想模拟组件中的方法。

0 投票
1 回答
955 浏览

angular - 修改 TestBed.overrideComponent 中定义的组件

我们正在使用

覆盖一个组件。

该组件有一个我们在 ngOnInit 方法中配置的 ViewChild

反过来CoolComponent又存在于一个Wrapper组件中。

当我们调用夹具fixture.detectChanges()Wrapper,它会尝试构造 CoolComponent,但是当它调用 doStuff() 时它会立即死亡,因为它CoolChildComponent是未定义的。

有没有办法获得CoolComponent它的存根CoolChildComponent?似乎我们无法将其删除,Wrapper因为它仅通过模板引用,而不是作为组件的属性。

0 投票
3 回答
3778 浏览

testing - 在 Angular 2.0.0 测试中加载 .html 失败

我对 Angular 2.0.0 中的 TestBed 有疑问

给定组件:

我得到错误:

我认为这可能是因为配置设置不正确。我正在使用 gulp 将 TypeScript 预编译为 JavaScript,并且我有以下项目结构:

但是如果我假设 html 文件是预编译的,并.compileComponents()从测试中删除命令,我会收到以下错误:

如果我删除async,我会收到此错误:

karma-test-shim.js中,我有:

我希望有人可以帮助我弄清楚我在配置中做错了什么。

0 投票
1 回答
4406 浏览

testing - Angular 2 测试 nativeElement

我一直在阅读角度网站上的测试教程。我很好奇是否有可通过 debugElement 进行测试的所有项目的列表。例如

还有哪些其他元素,例如我正在测试的 innerText 值。感谢您的任何帮助。

0 投票
0 回答
787 浏览

unit-testing - Angular2 & TestBed:如何模拟 AngularFire2/可观察数据服务?

我很难理解 TestBed 的工作原理以及如何使用它来模拟数据检索(通过 AngularFire2 即 observables)/推送离线单元测试。如果有人可以提供一个简单的例子来看看它会让事情变得容易得多。

下面是(部分)StateService。然后我将此服务注入另一个组件并打印出 graphModules 名称,例如

图-modules.component.html

<div *ngFor="let module of s.graphModules$ | async"><div class="module-card">{{module.name}}</div></div>

图-modules.component.ts

constructor(public s: StateService){}

状态服务.ts

我想测试的是

1) 给定“graphModules”的模拟/存根,正确数量的 .card-module 将打印到 DOM。

2) 在使用 s.saveToDB() 更新模块之一后,名称在 DOM 中更新

附带说明一下,如果您对我的数据检索“架构”有其他评论,那也是最受欢迎的:)

非常感谢!

编辑:

好的,我发现了如何修复数字 1。测试正确通过。问题 2 尚待回答。规范文件现在看起来像这样:

图-modules.component.spec.ts

0 投票
0 回答
278 浏览

unit-testing - 使用 TestBed 对具有异步服务的组件进行 Angular2 单元测试

我正在使用 Angular 2.1.0。

我有一个非常简单的异步服务:

emit()模拟异步行为。和使用它的类:

我想为服务和组件编写单元测试。我已经阅读了 angular.io 教程。我需要额外的解释:(

对于测试组件我想:

  1. 测试开始时没有 div.c
  2. 打钩
  3. 检查 div.c 内容 = '值 1'
  4. 打钩
  5. 检查 div.c 内容 = '超值 2'

或者也许没有必要指出第 4 点和第 5 点,因为有双 2 和 3?

我知道使用异步服务测试组件有两种选择:使用存根服务或使用真实服务并监视关键功能。在我的情况下,我应该如何为这两种情况编写测试?

以及如何测试服务?我想避免等待 20 秒等待测试结果。

0 投票
0 回答
87 浏览

unit-testing - Angular 2 (final, not beta) unit testing (inject, TestBed) - 我如何监视服务构造函数中调用的函数(服务单元测试)?

我在 TestBed 中注入了服务,这意味着在我的控制之外调用了构造方法。那么我在哪里/如何设置间谍?

0 投票
1 回答
3036 浏览

testing - Angular 2 测试 - process.env

我尝试在我的应用程序中模拟请求,但流程变量存在问题。我存储在 process.env.backendUrl url 到后端 API。然后在 RestService 我有:

现在无法运行测试,因为例如 LoginComponent 我有 RestService 依赖项,并且出现此错误:

我在 enviroment.ts (由 angular-cli 创建的文件)中设置了proccess.env.backendUrl 。

我应该将它设置在其他地方还是有什么方法可以告诉因果报应这个变量?

0 投票
1 回答
2679 浏览

javascript - Angular 2 - 使用 ngOnInit 生命周期钩子中使用的 @input 测试组件

目前我正在尝试测试一个子组件,它接受来自主机组件的输入,并在 ngOnInit 生命周期钩子中使用,如下面的代码。

在这种情况下,应该如何测试 ChildComponent,其中 myValue 需要在创建时出现,同时能够访问 ChildComponent.transformedValue 进行断言。

我尝试使用这样的 Angular TestBed 类创建 ChildComponent

但是 ngOnInit 已经被调用到我调用的位置

我还尝试创建 HostComponent 的固定装置,虽然它有效,但我无法访问已创建的 ChildComponent 实例,我需要在 ChildComponent.transformedValue 字段上执行断言。

非常感谢您的帮助!

非常感谢!