【发布时间】:2021-02-01 16:11:21
【问题描述】:
我想了解如何使用在 Angular 中创建的依赖项来测试服务。该服务只有一种方法可以打开 Angular Material Snackbar 并且不返回任何内容。取决于条件,有两个选项可以显示 - 成功或错误。该服务没有公共属性,一切都在它包含的唯一方法中完成。该服务也有一些依赖关系。伪代码如下:
export class SnackbarService {
constructor(private snackBar: MatSnackBar, private status: Status) { }
openSnackBar(arg: string | Error):void {
let prop1: string;
let prop2: number;
let prop3: string;
if (arg instanceof Error) {
prop1 = this.status.default;
prop2 = 5000;
prop3 = 'error';
} else {
prop1 = 'another status';
prop2 = 6000;
prop3 = 'success';
}
this.snackBar.open(prop1, 'x', {
prop2,
horizontalPosition: 'center',
verticalPosition: 'top',
prop3
});
}
现在是测试。我在想如果以另一种方式编写上述服务可能会更容易测试 - 将公共属性作为参数传递给两个方法而不是一个方法 - 一个解决 if 语句,另一个实际打开 Snackbar .但是,假设代码如下所示。当方法没有返回任何东西并且没有公共属性时,可以实际测试什么?
describe('SnackbarService', () => {
let service: SnackbarService;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
MatSnackBarModule
],
providers: [
SnackbarService
]
});
service = TestBed.inject(SnackbarService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
我知道应该将依赖项导入到测试中,但是除了创建服务本身之外,我不知道如何测试其他任何东西。感谢任何建设性的提示!
【问题讨论】:
标签: angular typescript unit-testing testing jasmine