Angular - 如何在单元测试中模拟外部函数?

问题描述 投票:0回答:2

我正在尝试为依赖于导入函数的函数编写角度单元测试 - 如何编写模拟导入函数结果的单元测试?我的功能是:

import { DependentMethod } from './dependentMethod';

export function doSomething() {
  const dependentResults = DependentMethod(); // DependentMethod makes an http call and returns the result
  return dependentResults;
}

在这种情况下,我想测试

doSomething
并模拟
DependentMethod
功能。当我以前尝试模拟东西时,我在类方法上使用了
spy
但我不确定在这种情况下如何处理它。任何帮助将不胜感激!

javascript angular unit-testing jasmine
2个回答
0
投票

在您的

component.spec.ts
文件中导入整个库:

import * as dependentMethodLibrary from './dependentMethodLibrary';

在那之后,在你的

describe
it
块中,模拟库的功能:

spyOn(dependentMethodLibrary, 'DependentMethod').and.returnValue({});

-1
投票

您可以尝试以下操作,

import { dependent } from './dependentLibrary'; 


describe('yourCoponent', () => {
  let component: yourComponent;
  let service : dependentService;

  beforeEach(() => {
    service = new dependent(null); // if your service has further dependency
    component = new yourComponent(service);
  });

  it('should perform test', () => {
    // Arrange part --> 
    spyOn(service, 'dependentMethod').and.callFake(() => {
      return Observable.from([ [1,2,3] ]); // return your mock data
    });

    //Act part
    component.ngOnInit();

    //Assert
    expect(component.testable.action).toBe(value);

  });
© www.soinside.com 2019 - 2024. All rights reserved.