调用同一文件中的测试功能

时间:2018-08-29 08:58:00

标签: javascript angular typescript testing karma-runner

我有2个函数,其中一个调用另一个,另一个返回一些东西,但是我无法进行测试。

使用expect(x).toHaveBeenCalledWith(someParams);期望使用间谍,但是我不知道如何在同一文件中监视某个函数...

  

错误::可能是间谍,但得到了功能。

     

用法:Expect()。toHaveBeenCalledWith(... arguments)

Example.ts

doSomething(word: string) {
   if (word === 'hello') {
      return this.somethingElse(1);
   }
   return;
}

somethingElse(num: number) {
   var x = { "num": num };
   return x;
}

Example.spec.ts

fake = {"num": "1"};

it('should call somethingElse', () => {
    component.doSomething('hello');
    expect(component.somethingElse).toHaveBeenCalledWith(1);
});

it('should return object', () => {
    expect(component.somethingElse(1)).toEqual(fake);
});

1 个答案:

答案 0 :(得分:1)

在您的Example.spec.ts中,只需添加spyOn(component, 'somethingElse');作为测试it('should call somethingElse ...的第一行:

fake = {"num": "1"};

it('should call somethingElse', () => {
    // Add the line below.
    spyOn(component, 'somethingElse');
    component.doSomething('hello');
    expect(component.somethingElse).toHaveBeenCalledWith(1);
});

it('should return object', () => {
    expect(component.somethingElse(1)).toEqual(fake);
});

toHaveBeenCalledWith之前(根据Jasmine documentation),expect方法需要一个Spy作为参数。