用karma jasmine angular2测试虚空

用karma jasmine angular2测试虚空,angular,jasmine,void,karma-mocha,Angular,Jasmine,Void,Karma Mocha,我正在用jasmine和karma测试我的代码 当我测试一个返回值的方法时,它是正常的。但我的问题是如何测试void方法(不返回任何内容),例如: public aj(a: Array<x>, p: x) { if (a.indexOf(p) < 0) { a.push(p); } } 我犯了这个错误 Error: <toHaveBeenCalled> : Expected a spy, but got undefined. Usage: expec

我正在用jasmine和karma测试我的代码

当我测试一个返回值的方法时,它是正常的。但我的问题是如何测试void方法(不返回任何内容),例如:

public aj(a: Array<x>, p: x) {
 if (a.indexOf(p) < 0) {
   a.push(p);
  }
 }
我犯了这个错误

Error: <toHaveBeenCalled> : Expected a spy, but got undefined.
Usage: expect(<spyObj>).toHaveBeenCalled()
Error::应为间谍,但未定义。
用法:expect().toHaveBeenCalled()

有人能帮我吗?我试过了,但总是出错。

如下更改代码:

it(“”,()=>{
const component=newsynthese(consorservice);
const x=[pHC,pHP];//也许你应该检查一下,是不是应该让x=['pHC','pHP']?
component.aj(x,pI);//也许您应该检查这个,它是不是应该是component.aj(x,pI')?
//检查pI现在是否在数组中,因为方法就是这样做的,如果元素不在数组中,则推送它
expect(x).toContain(pl);//我使用了pI,但可能会像我以前的建议一样检查'pI'。
});

该功能仍有副作用,但仍有作用。因此,请测试它所做的事情——使用数组调用它,并确保在适当的情况下(在其他情况下)将该项添加到它中。换一种说法:你一定有写这个函数的理由,你需要它做的事情:它能做到吗?除此之外,请给出您尝试过的内容,以及您遇到的错误。如果没有,请至少发布您已经尝试过的代码,以便我们了解您的问题。jonrsharpe,trichetriche我更新了它。你能看一下吗。谢谢,您只是监视该方法并希望调用它,但中间没有实际调用该方法的代码。如果我尝试这样调用该方法:it(“”,()=>{let component=newsynthese(conosservice);let x=[pHC,pHP];let xx=[posteHC,posteHP];component.concatenersandoublons(x,xx);spyOn(component,'aj');expect(component.aj(x,pI)).toHaveBeenCalled()});这不会改变@AmitChigadanithaanks它是有效的。但是这里:expect(x.indexOf(pI)).not.toBe(-1)您实际上不使用间谍或组件。看起来您只是在数组x中测试pI,仅此而已。当您删除sypAJ时,不会改变任何东西。
Error: <toHaveBeenCalled> : Expected a spy, but got undefined.
Usage: expect(<spyObj>).toHaveBeenCalled()