Jasmine是一个用于测试JavaScript代码的行为驱动开发(BDD)框架。 Jasmine没有外部依赖,也不需要DOM。
我有一个 PopupComponent,我正在尝试使用 Jasmine 进行测试。我的 PopupComponent 中有一个带有多个 Formcontrol 的表单,它将向 FormArray 添加一个条目。 所以我正在尝试测试...
目前我正在使用一项服务: @Injectable({ 提供于:MyModule }) 导出类 MyService { //... 做东西 } --- @NgModule({ 声明:[MyComp], 进口:[ 反应式表单模块, ...
我正在尝试测试扩展基本组件的子组件。 SubComponent 覆盖父组件中的 ngOnInit() ,而 Base comp 包含 ngOnit 和 ngOnDestroy 方法内部的一些逻辑...
我正在使用 jest 进行集成测试,其中一个文件夹下有 20 个测试文件。我需要确保在运行测试时不需要执行该文件夹中的三个文件。我尝试过
如何为在 HTML 元素上调用scrollIntoView 的代码创建单元测试
我在 Angular 组件中有一个方法,可以通过选择给定某些条件的其中一张卡片来滚动元素列表(称为“卡片”),然后调用scrollIntoView() 方法。 ...
VS Code [角度]业力测试调试断点只能工作一两次,无需重新启动 VS Code
我已经使用 VS code 来调试我的 Angular jasmine karma 测试有一段时间了,但我总是遇到一个问题,在调试测试几次后,断点停止工作。我必须重新...
我正在尝试将单元测试添加到我的 Angular 2 应用程序中。在我的一个组件中,有一个带有(单击)处理程序的按钮。当用户单击按钮时,将调用 .ts 中定义的函数...
我正在尝试测试调用另一个服务的服务。 我有 auth.service.ts,其中包含调用 MsalService.loginRedirect(); 的登录方法。 从'@angular/co...导入{注入,可注入}
我有一个服务SoundPanelService,用于服务隔离场景(如https://angular.io/guide/hierarchical-dependency-injection#scenario-service-isolation) @Injectable() 出口CL...
我不明白为什么我的服务没有被调用.. 在我的 BooklistComponent 中,我调用 ngOnInit ,它调用 initBooks() ,它调用 bookApiService getAll() 方法... 我的设置: 每个之前( ...
如何使用 Jasmine 单元测试框架(或任何其他 BDD JavaScript 测试框架)编写参数化测试?
我有一个效果,在一种情况下返回一个 EMPTY Observable。我正在尝试测试这个案例,但我似乎无法弄清楚如何测试 EMPTY Observable? 我的代码如下: 效果: 效果...
如果实现已订阅它,如何测试 Observables 抛出错误(使用 throwError)?
假设我有一个带有以下 HTML 的 Angular 组件(摘录): 假设我有一个带有此 HTML 的 Angular 组件(摘录): <some-thirdparty-component (onClickCallback)="handleChange($event)" 我有一个函数可以处理这个问题。它将其转发到 service.saveSomething (返回一个 Observable)。够简单的。作为一个包装组件,我需要 subscribe,因为我显然想让它执行。 public handleChange(event: any) { this.assignmentService.saveSomething(event) .pipe(takeUntil(this.ngUnsubscribe)) // additional error handling may be piped here .subscribe(); } 假设我想测试一下。特别是,我想测试错误情况,即当它(又名保存或其他)失败时: let dataMock = {}; it('should throw error', waitForAsync(() => { const error = new Error('test error'); spyOn(service, 'saveSomething').and.returnValue(throwError(error)); expect(() => { component.handleChange(dataMock); }).toThrow(); expect(service.saveSomething).toHaveBeenCalledOnceWith(dataMock); expect(toastService.showToast).toHaveBeenCalledOnceWith(/** **/); // an additional error handling in the pipe to test in a different implementation })); 问题是测试失败,在此版本中显示“预期函数会抛出异常。”。 当我将其更改为不希望抛出错误时: component.handleChange(dataMock); 然后 jasmine 实际上抛出了一个错误,这使得测试失败: 错误:main.js 中测试错误 我已经将它包裹在waitForAsync中,这在这种情况下通常很有用。 我的猜测是,问题是由于 Observables 的工作方式,抛出异常以异步方式发生。 Observable 错误被转换为 JS Error 并被抛出。然而,我无法通过 jasmine toThrow 捕捉到这个,因为它发生在最后,即通过 waitForAsync 并且只在那里捕捉到。但现在断言已经太晚了。 此外,我无法公开 Observable(这是通常的方式),因为有人需要以高效的代码进行订阅。只是出于测试原因而暴露它,对我来说似乎也不干净。 有点像先有鸡还是先有蛋的问题... 那么遇到这种情况该怎么办? 如果我理解您关于可观察量问题的问题,我个人会做类似的事情,关于调用可观察量并在您的代码库中订阅它们以及错误抛出/处理逻辑。 public handleChange(event: any) { this.assignmentService.saveSomething(event) .pipe(takeUntil(this.ngUnsubscribe)) .subscribe({ next: (value: any) => { console.log(value, 'success!!!'); }, error: (err: any) => { console.error('error detected, printing out the output error msg:', err); } }); } 希望我正确理解你的问题,上面的代码是处理可观察值和订阅输出的错误的好方法。如果您的问题与如何处理 jasmin 错误有关,我个人没有使用过 jasmin,但您可以尝试使用此代码来实现它。 希望这有帮助!祝你有美好的一天! :) :) :)
我正在尝试找到一种方法来运行 Jasmine 5 测试,并从中获取有意义的 HTML 报告。我在 Karma 上看记者,但由于我使用 Jasmine 进行 API 测试,所以我没有用...
鉴于我在 Angular 服务中有一个像这样的方法: 公共 logException(错误:错误,方法名称?:字符串){ if (!方法名) { 方法名 = this.extractCallerName(error.stack); ...
关于多个 mat-select 和 mat-option 的测试用例
it('当 control1 更改为“b”时应该更新 control2 选项', (() => { const control1Select = Fixture.nativeElement.querySelector( 'mat-select[formControlName="control1&q...
我想对我的以下方法进行单元测试: this.boxValue = ''; subscribeToFilterChanges(): void { this.filterBox.valueChanges 。订阅( 数据=> { 如果(数据){ 这个。
我的组件如下所示: 构造函数( 私有只读dialogRef:MatDialogRef, 私有只读角色服务:RolesService, 私有只读
我正在寻找能为角度控制器生成样板茉莉花测试的东西。看来您可以将控制器的依赖项拉出来并将它们放入规范中并保存...
我是魅力报告的新手,想要生成魅力报告。有人能帮忙吗? 我正在尝试一个简单的示例,我的项目文件夹包含 config.js 和 test.js 以及 allure r...