【发布时间】:2018-05-22 19:52:32
【问题描述】:
在使用TestBed 时,您真的是在对组件进行单元测试还是在进行集成测试?
创建夹具 (TestBed.createComponent(AppComponent)) 并调用 fixture.detectChanges() 会自动调用 ngOnInit。如果您想测试另一种方法,您现在正在测试多个单元。
这就引出了另一个问题:您应该测试单元还是测试用户操作?例如,您是否应该测试 setDimensions 方法,或者您是否应该测试当用户单击某个按钮时,元素是否具有适当的尺寸。
我猜第一种测试方式会更接近于“单元测试”方式,但是你仍然需要处理被调用组件的生命周期方法。这让我觉得没有办法使用TestBed 对组件进行单元测试。存根所有生命周期方法似乎很荒谬。
无论您决定测试哪种方式,都应该测试 DOM,不是吗?然后,您不会通过包含 DOM api 进行孤立测试。
【问题讨论】:
-
在将包含相关组件的所有内容称为“集成测试”stackoverflow.com/a/5357837/4793951 之前,您应该考虑这一点
-
我不确定集成测试是否必须涉及系统的外部部分(例如 DB)而不是单元测试。对您指出我的答案的评论反映了我的想法:“单元测试的描述非常好,但您是否认为成对集成不涵盖整个应用程序,仅涵盖两个可测试单元”。那么你是说我的问题中描述的测试,使用
TestBed断言DOM是一个单元测试,或者单元测试和集成测试之间可能有一条灰线,它可以被认为是其中之一?
标签: angular unit-testing integration-testing angular-components testbed