我正在尝试在Angular 2 / AngularCLI应用中设置一些单元测试。虽然应用程序按预期工作,但测试显示失败。
因此,为了简单地开始(或者我认为),我设置了一个我从命令行生成的测试组件(ng g c testr)。这将创建基本组件测试以及组件文件。当我将CD刻录到此组件中,然后使用" ng test"运行此内置测试时,我会收到与我的应用程序中的其他组件相关的错误。这让我感到困惑,因为我认为单个组件测试是单元测试 - 因此,仅用于测试该特定组件。这是组件的示例测试:
/* tslint:disable:no-unused-variable */
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { TestrComponent } from './testr.component';
describe('TestrComponent', () => {
let component: TestrComponent;
let fixture: ComponentFixture<TestrComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ TestrComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(TestrComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
我认为这应该正常工作&#34;开箱即用&#34; - 因为它是由AngularCLI自动设置的。那么为什么失败呢?我在这里错过了什么吗?这里的测试代码不是用于测试内部组件,而不是它与应用程序中其他组件的关系吗?
以下是我遇到的其中一个错误的示例。显然,它完全适用于不同的组件。我只是通过运行这一项测试,为各种组件收到了很多这样的错误。
ERROR in ./src/app/app.component.ts
Module not found: Error: Can't resolve 'app/app.component.html' in '/Users/mko/Documents/abc-cli/abc-cli/cli-abc/src/app'
@ ./src/app/app.component.ts 77:22-55
@ ./src/app/app.component.spec.ts
@ ./src \.spec\.ts
@ ./src/test.ts
这是另一个与另一个组件有关的错误:
ERROR in ./src/app/views/client/client-panel.component.ts
Module not found: Error: Can't resolve 'app/views/client/client-panel.component.html' in '/Users/mko/Documents/abc-cli/abc-cli/cli-abc/src/app/views/client'
@ ./src/app/views/client/client-panel.component.ts 34:22-88
@ ./src/app/views/client/client-panel.component.spec.ts
@ ./src \.spec\.ts
@ ./src/test.ts
如果我进入某个组件并运行&#34; ng test&#34;,是否或仅仅运行该组件的单元测试?而且,如果没有,我需要更改什么才能使它只运行单个组件测试,而不是全部?
答案 0 :(得分:0)
所以我想出了问题所在。与我所假设的相反,开箱即用的所有单个组件规范测试将一起运行,因为它们在描述块中组合在一起。因此,进入某个组件并运行“ng test”将不会仅运行该测试。它实际上将运行所有这些。
但是,您可以通过在describe函数前加上一些内容来运行单个组件测试,例如f:
fdescribe('SomeComponent',()=&gt; {...}
如果存在这样的功能,那将会运行,而不会运行其他功能。
但是,更重要的是,这里要说的是“ng测试”实际上是为了运行整个系列的单元测试,而不是单个单元测试。