我有一个注入配置对象的构造函数。我正在对构造函数中的对象进行一些验证。如果验证失败,我想抛出一个错误,向用户描述出了什么问题。
我如何使用 Angular 和 Jasmine 进行测试?
这是我现在的操作方式,但这会返回失败的测试:
import { TestBed, inject } from '@angular/core/testing';
import { AwsCognitoService } from './aws-cognito.service';
import { AWS_COGNITO_CONFIG, AwsCognitoConfig } from './aws-cognito.config';
describe('AwsCognitoService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
AwsCognitoService,
{
provide: AWS_COGNITO_CONFIG,
useValue: new AwsCognitoConfig({
region: 'eu-west-1'
})
}
]
});
});
it('should throw error when missing userPoolId or identityPoolId', inject(
[AwsCognitoService],
(service: AwsCognitoService) => {
expect(service).toThrowError('Missing required configuration property: userPoolId or identityPoolId');
}
));
});
完整测试源:stackblitz example
答案 0 :(得分:2)
您可能知道,在创建类的新实例时会调用构造函数。
Jasmine的expect
函数可以接受一个函数并将其隔离,让您期待之后。
使用此语法,您可以创建Jasmine可以监视的隔离功能。如您所见,您的测试通过了。
it('should throw error with missing param', () => {
expect(() => new AwsCognitoService({} as any)).toThrowError();
});