测试茉莉花:预期间谍'x'被调用为:[]但实际的调用是...?

时间:2020-07-03 13:36:57

标签: angular jasmine

编辑

我意识到我的onSubmit函数调用了另一个函数。那就是我所缺少的。因此,我拥有的另一个功能是私有的,并在其中传递了字幕参数。

不确定如何测试吗?

结束编辑


这里是新茉莉花(和测试版)的新手。我究竟做错了什么?如何测试字幕已通过?

我正在尝试学习如何更改“实际通话”。

我收到此错误

    Expected spy updateCompany to have been called with:
      [ 12345, Object({ email: undefined, name: 'test', subtitle: 'subtitle' }) ]
    but actual calls were:
      [ 12345, Object({ email: undefined, name: 'test', subtitle: undefined }) ].

运行此测试时:

  describe('onSubmit', () => {
    const file = new Blob(['']);
    const e = { target: { files: [file] } };
    let mockReader;
    let readerOnloadProperty: any;
    let mockResult: any;

    beforeEach(() => {
      mockReader = jasmine.createSpyObj('FileReader', ['readAsDataURL'], [{ 'result': mockResult, 'onload': readerOnloadProperty }]);
      mockReader.result = 'result';
      spyOn(window as any, 'FileReader').and.returnValue(mockReader);
      component.ngOnInit();
    });
    describe('updateSubtitle', () => {
      let companiesService: CompaniesService;
      let updateCompanySpy: jasmine.Spy;
      let flash: FlashWrapperService;
      let flashDangerSpy: jasmine.Spy;
      let flashInfoSpy: jasmine.Spy;
      beforeEach(() => {
        companiesService = TestBed.inject(CompaniesService);
        updateCompanySpy = spyOn(companiesService, 'updateCompany');
        flash = TestBed.inject(FlashWrapperService);
        flashDangerSpy = spyOn(flash, 'flashDanger');
        flashInfoSpy = spyOn(flash, 'flashInfo');
      });

      it('calls to update the company', async () => {
        component.onSubmit(e);
        await fixture.whenStable();
        expect(updateCompanySpy).toHaveBeenCalledWith(12345, {
          email: undefined,
          name: 'test',
          subtitle: 'subtitle'
        });
      });

0 个答案:

没有答案