我在试着做一个发球Angular 的测试。
这是我的密码
describe('AddressService', () => {
let service: AddressService;
let injector: TestBed;
let httpTestingController: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [AddressService]
});
injector = getTestBed();
service = injector.inject(AddressService);
httpTestingController = injector.inject(HttpTestingController);
// service = TestBed.inject(AddressService);
});
afterEach(() => {
httpTestingController.verify();
})
httpTestingController = TestBed.inject(HttpTestingController);
it('should be created', () => {
expect(service).toBeTruthy();
});
const dummyAddressListResponse = {
data: [
{direccion: 'address1'}, {Colas: 'queue1'},
{direccion: 'address2'}, {Colas: 'queue2'}
],
};
it('getAddress() should return data', () => {
service.getAddress().subscribe((res) => {
expect(res).toEqual(dummyAddressListResponse);
});
const req = httpTestingController.expectOne(`${environment.URI}/mock-address`);
expect(req.request.method).toBe('GET');
req.flush(dummyAddressListResponse);
})
});
在运行测试时ng test --main源代码/应用程序/服务/地址/地址.服务.规范.ts
我看到此错误错误:需要先调用TestBed.initTestEnvironment()
我已经找过了,没有找到任何解决办法,它发生在某人身上吗?
4条答案
按热度按时间ubby3x7f1#
对于jest用户-只需在setup-jest.js中添加以下代码。因为jest需要初始化。
zpf6vheq2#
第一件事不应使用
--main
,它指向入口点,而不是所需的测试,并且应为src/test.ts
。要运行单个测试,请使用以下命令:
ng测试-包括“应用程序/服务/地址/地址.服务.规范.ts”
测试应该有一点不同:
noj0wjuj3#
问题是它必须运行从
test.ts
开始的所有内容。因此,只需将
const context = require.context('./', true, /\.spec\.ts$/);
更改为const context = require.context('./', true, /address\.service\.spec\.ts$/);
并使用ng test
命令,而不是运行ng test --main src/app/services/address/address.service.spec.ts
命令。dced5bon4#
这是否使用ng-packagr(即Angular 库)?如果是,您可能需要检查./project/文件夹下是否没有node_modules。
这给了我一个完全相同的错误。当我删除项目文件夹下的node_modules时,它又开始工作了。
来源:https://github.com/ngneat/spectator/issues/546