使用 jasmine 运行 angular2 单元测试时调用服务时出错

奥马尔·巴希尔

我正在测试一个 Angular 服务,我已经用打字稿编写了代码,但是当我运行我的测试用例时,出现“this.someFunction.show()”不是一个函数和“this.someFunction.show”的错误()" 在我的实际服务中。这就是我想要做的。

myService.spec.ts

import { dep1, dep......m dep-n } from '../../../../some-modules';
describe('ServiceTest', () => {
let cashPaymentHandlerService : CashPaymentHandlerService;
it('for cash, when pick list enabled, 1 cash drawer, adds payment line', () => {
  methodOne(); //work fine
  methodTwo(false); //work fine
  methodThree(true); //work fine      
  methodFour(); //work fine
  methodFive(1); //work fine
  methodSix(); //work fine
  givenDependanciesAreMocked();
  whenHandlePaymentIsInvoked();
  expect(cashDrawerService.openCashDrawer).toHaveBeenCalled();
});

function givenDependanciesAreMocked(){
  TestBed.configureTestingModule({
 providers: [
   {provide: ServiceOne, useValue: serviceOne},
   {provide: ServiceTwo, useValue: serviceTwo},
   {provide: ServiceN, useValue: serviceN},
   CashPaymentHandlerService
 ]
});
cashPaymentHandlerService = TestBed.get(CashPaymentHandlerService);
}

function whenHandlePaymentIsInvoked() : any {
  cashPaymentHandlerService.handlePayment(cashPaymentRequest);
}

这是我的cash-payment-handler.service.ts文件

import { dep1, dep......m dep-n } from '../../../../some-modules';

export class CashPaymentHandlerService {
constructor(private service1 : Service1,
          private service2: Service2,
          private serviceN: ServiceN){
}

handlePayment(cashPaymentRequest: CashPaymentRequest) {
  let request = new service1();
  request.initialAmount = this.service2.dataModel.transactionDataModel.balance();
  request.onValueEntered = (response: AmountPromptResponse) => {
    if (!response.cancelled){
      this.addCashPaymentLine(response.value, cashPaymentRequest); // runs fine
    }
  };
  this.serviceN.show(request); //getting error on this line
}

}

来自ServiceN.ts 的代码

constructor(
private someController: SomeController){
}

show(options?: NewRequest): void {
if (!options){
  options = new NewRequest();
}

this.someController.show(PromptComponent, options); // PromptComponent imported from some other component
}

我在很多论坛上搜索了解决方案,花了一整天的时间,但无法解决。任何帮助将不胜感激。Meherbani hosi nay。

奥马尔·巴希尔

解决了这个问题,我不得不在我的“ myService.spec.ts ”文件中为“ this.serviceN.show(request);添加模拟函数并且它工作正常,因为我试图测试的服务正在进一步调用组件,当单元测试调用它时,它无法在不同的服务中找到对进一步方法的正确引用,因此它失败了。嘲笑这些依赖关系为我解决了这个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Karma和Jasmine / Angular 8并行测试多个API调用的服务的单元测试

来自分类Dev

使用Karma和Jasmine单元测试Angular服务

来自分类Dev

使用Jasmine测试Angular2 / TypeScript管道

来自分类Dev

使用Jasmine进行Angular JS单元测试

来自分类Dev

使用Chutzpah在Typescript中运行Jasmine测试

来自分类Dev

Angular2 Jasmine spyOn http 调用

来自分类Dev

Jasmine-从Angular Controller运行测试

来自分类Dev

使用 DarkSkyApi 调用进行 Angular 2 服务单元测试

来自分类Dev

使用Jasmine进行Angular2测试,mouseenter / mouseleave-test

来自分类Dev

Angular2-使用PhantomJS运行单元测试时出现配置错误

来自分类Dev

使用Jasmine 2的spyOn测试Angular指令

来自分类Dev

使用Jasmine测试Angular queryParams

来自分类Dev

使用 jasmine 进行单元测试时模拟全局对象

来自分类Dev

Angular 服务中的单元测试 $q 承诺 - Karma、Jasmine

来自分类Dev

失败:没有提供Reflector的提供商!使用业力在angular2中运行测试时出错

来自分类Dev

Angular2 / Testing:如何使用模拟服务提供商运行测试?

来自分类Dev

使用Jasmine进行单元测试$ modal

来自分类Dev

如何使用Karma + Jasmine + AngularJS在测试中运行通用代码?

来自分类Dev

在使用Require的JavaScript上从Grunt运行Jasmine测试

来自分类Dev

如何使用Jasmine和Visual Studio代码运行特定的测试?

来自分类Dev

通过TFS在Visual Studio中运行Jasmine单元测试

来自分类Dev

Angular单元测试Jasmine Spy错误

来自分类常见问题

使用@Input()进行Angular2单元测试

来自分类Dev

如何对控制器中的函数进行单元测试(使用Jasmine),该函数调用工厂服务并返回承诺

来自分类Dev

如何使用Jasmine(Angular JS)对自定义装饰器进行单元测试

来自分类Dev

使用Karma / Jasmine对ES6 Angular Directive ControllerAs进行单元测试的问题

来自分类Dev

ReferenceError:在Karma中运行Jasmine单元测试时未定义<module>

来自分类Dev

Atom 如何运行 jasmine 测试?

来自分类Dev

Angular2是否必须使用nodejs,我可以在apache服务器上运行吗?

Related 相关文章

  1. 1

    使用Karma和Jasmine / Angular 8并行测试多个API调用的服务的单元测试

  2. 2

    使用Karma和Jasmine单元测试Angular服务

  3. 3

    使用Jasmine测试Angular2 / TypeScript管道

  4. 4

    使用Jasmine进行Angular JS单元测试

  5. 5

    使用Chutzpah在Typescript中运行Jasmine测试

  6. 6

    Angular2 Jasmine spyOn http 调用

  7. 7

    Jasmine-从Angular Controller运行测试

  8. 8

    使用 DarkSkyApi 调用进行 Angular 2 服务单元测试

  9. 9

    使用Jasmine进行Angular2测试,mouseenter / mouseleave-test

  10. 10

    Angular2-使用PhantomJS运行单元测试时出现配置错误

  11. 11

    使用Jasmine 2的spyOn测试Angular指令

  12. 12

    使用Jasmine测试Angular queryParams

  13. 13

    使用 jasmine 进行单元测试时模拟全局对象

  14. 14

    Angular 服务中的单元测试 $q 承诺 - Karma、Jasmine

  15. 15

    失败:没有提供Reflector的提供商!使用业力在angular2中运行测试时出错

  16. 16

    Angular2 / Testing:如何使用模拟服务提供商运行测试?

  17. 17

    使用Jasmine进行单元测试$ modal

  18. 18

    如何使用Karma + Jasmine + AngularJS在测试中运行通用代码?

  19. 19

    在使用Require的JavaScript上从Grunt运行Jasmine测试

  20. 20

    如何使用Jasmine和Visual Studio代码运行特定的测试?

  21. 21

    通过TFS在Visual Studio中运行Jasmine单元测试

  22. 22

    Angular单元测试Jasmine Spy错误

  23. 23

    使用@Input()进行Angular2单元测试

  24. 24

    如何对控制器中的函数进行单元测试(使用Jasmine),该函数调用工厂服务并返回承诺

  25. 25

    如何使用Jasmine(Angular JS)对自定义装饰器进行单元测试

  26. 26

    使用Karma / Jasmine对ES6 Angular Directive ControllerAs进行单元测试的问题

  27. 27

    ReferenceError:在Karma中运行Jasmine单元测试时未定义<module>

  28. 28

    Atom 如何运行 jasmine 测试?

  29. 29

    Angular2是否必须使用nodejs,我可以在apache服务器上运行吗?

热门标签

归档