问题标签 [angular-test]
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.
angular - 了解 Angular 的 fakeBackendProvider、MockBackEnd 和 MockConnection
我在测试我的 Angular 应用程序时试图模拟一些 http 请求。我正在通过使用 Angular 的 MockBackEnd 和 MockConnection 来关注互联网上使用 fakeBackendProvider 的流行示例。尽管我很好地理解了代码,但我想更详细地了解这些提供程序的内部工作。
他们如何拦截http请求?例如,当我的代码调用 http.get() 时,谁迷上了什么,谁替换了什么,以及如何?
任何参考资料都会非常有帮助。
angular - angular-cli :运行测试套件运行所有套件而不是一个尖头套件
我处于需要为不同目的运行不同的测试用例的情况。就像冒烟测试一样,我正在运行 2 个测试用例,而对于回归,我需要运行 30 个测试用例。我已经suites
在我的定义protractor.conf.js
和我从ng
命令调用套件
在 Angular cling e2e -- --suite=smoke
中假设只运行一个测试用例,但实际上它运行我项目中的所有测试用例。
不知道为什么它运行所有的测试用例而不是只运行一个测试用例。
我已经经历了ng --suite 问题,看起来它在 angular cli 中是一个真正的问题。
angular - 如何测试来自返回多个可观察对象的 http 服务的数据
我有一个数据服务,它从服务器获取数据并发出多个请求,然后返回一个可观察的数组。我想测试数据。
我尝试做的是在我发送的包含两个可观察对象的模拟响应中,我不知道这是否是测试数据的正确方法。
但是测试失败了,尤其是异步测试块中的最后三个测试
angular - 如何在使用 jasmine 的 Angular 2 测试中为每个测试用例为同一提供者提供唯一的存根?
假设我在同一个描述块中有两个测试用例,需要使用相同的服务,但每个测试用例都必须提供不同的服务存根?下面的示例将按预期为两个测试用例提供 serviceStub1,但我需要找到一种方法为第二个用例提供 serviceStub2。我已经花了很多时间在这上面,但到目前为止我迷路了。任何帮助将不胜感激,谢谢。
angular - angular 4 单元测试输入文本框(行为)点击/聚焦
我正在尝试对我的组件进行单元测试,并且在一个测试中我想关注/单击输入文本框。这是因为当我们单击输入文本时,它会打开一个模式,我想确保该操作发生。
这在 e2e 测试中可能是可能的,但由于需要,希望在单元测试中实现它。
HTML 模板
组件.spec.ts
假设测试台模块配置没问题。
很抱歉,我无法分享整个代码。
angular - Angular CLI - 如何在 src 文件夹之外获取 .spec.ts 文件?
我有一个 Angular CLI 项目,它NgModule
位于/src
文件夹之外(最终这个 NgModule 将被打包为一个 npm 模块,但现在我只是把它放在外面/src
)。
我正在尝试为此 NgModule 编写单元测试,但ng test
似乎没有拾取.spec.ts
文件夹之外的/src
文件。
我试过改变路径/src/test.ts
:
但我收到一个错误:Module build failed: Error: /absolute/path/to/file.spec.ts is not part of the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.
我还尝试在以下include
属性中添加我的 NgModule 的路径tsconfig.spec.json
:
但没有成功。有任何想法吗?
typescript - 期望的对象是一种 ScalarObservable,但是是 Observable
在我的 Angular 应用程序中,我通过以下方式使用 Observables:
我对它进行了单元测试:
它工作得很好。
但是,如果我尝试使用以下方法向我的方法添加默认错误处理逻辑:getItem()
catch
它仍然可以正常工作,但现在测试失败了,说:
预期的对象是一种 ScalarObservable,但它是 Observable({ _isScalar: false, source: ScalarObservable({ _isScalar: true, value: 'mock', scheduler: null }), operator: CatchOperator({ selector: Function, caught: }) })。
这是什么意思?为什么会这样?我该如何解决这个问题?
angular - 更改 Angular4 单元测试的模拟激活路由的值
我的 Angular 组件依赖于使用解析器服务设置数据参数的激活路由。对于我的单元测试,我喜欢模拟它,如下所示:
activatedRouteStub = {
data: {
subscribe: (fn: (value: Data) => void) => fn({
someObject: SomeObjectMock // hard coded JSON value
}),
}
};
TestBed.configureTestingModule({
declarations: [SomeComponent],
providers: [
{ provide: ActivatedRoute, useValue: activatedRouteStub }
]
});
route = fixture.debugElement.injector.get(ActivatedRoute);// where route is in an instance of ActivatedRoute that is injected into SomeComponent as a dependency
这对于依赖于activatedRoute 的这种行为的初始测试集很有效。但是现在,我需要更改实际返回的内容,基本上,我需要使用修改后的 SomeObjectMock 并将其设置为 someObject。
而且我对如何做到这一点缺乏想法,我尝试过以下操作:
route = {
data: {
subscribe: (fn: (value: Data) => void) => fn({
someObject: SomeObjectMock // hard coded JSON value
}),
}
};
以前,当我对一个简单的服务进行存根时,这已经奏效了,更改方法的定义以返回不同的值是相当微不足道的。
任何建议/指针?
angular - Test pipe with dependencies on services
I have a pipe that sanatises HTML as below:
I want to test it as below:
The DomSanatizer is an abstract class which is autowired by typescript by passing it into a constructor:
Currently I get the typescript errror:
Cannot create an instance of the abstract class 'DomSanitizer'.
Does anyone know what typescript does when instantiating dependencies passed into a constructor in Angular? Or what the way to test something like this is?