Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在angular unittest中发送请求之前如何验证主体_Angular_Unit Testing_Http Post_Karma Jasmine_Testbed - Fatal编程技术网

在angular unittest中发送请求之前如何验证主体

在angular unittest中发送请求之前如何验证主体,angular,unit-testing,http-post,karma-jasmine,testbed,Angular,Unit Testing,Http Post,Karma Jasmine,Testbed,我在做单元测试时遇到了一些麻烦,我读了很多文章,但没有一篇对我有帮助,似乎很难做一个简单的测试 我需要测试这个函数,它返回一个可观察的,我实际上只需要验证myBody是否正确构建,我不想进行实际的HttpRequest public函数(params){ const myBody=新建buildMyBodyModel(); 这个.buildMyBody(params,myBody);//私有函数将为我设置值 返回this.sendService.send(myBody);//发出一个htppPo

我在做单元测试时遇到了一些麻烦,我读了很多文章,但没有一篇对我有帮助,似乎很难做一个简单的测试

我需要测试这个函数,它返回一个
可观察的
,我实际上只需要验证
myBody
是否正确构建,我不想进行实际的
HttpRequest

public函数(params){
const myBody=新建buildMyBodyModel();
这个.buildMyBody(params,myBody);//私有函数将为我设置值
返回this.sendService.send(myBody);//发出一个htppPostRequest并向我返回一个Observeble
}
private buildMyBody(参数,myBody){
myBody.name=params.name;
myBody.color=params.customColor;
myBody.count=params.number+1;
}
预期的
myBody

{
姓名=‘杰克’;
颜色=‘橙色’;
计数=4;
}

希望这就是您想要的:-

it('send method should be called with expected param', () => {
    const sendService = TestBed.get(SendService);
    const params = { name: 'Jack', customColor: 'Orange', number: 3 };
    spyOn(sendService, 'send');
    component.myCoolFunction(params);
    expect(sendService.send).toHaveBeenCalledWith({ name: 'Jack', color: 'Orange', count: 4 });
});
如果您只需要测试myBody是否正确构建,请尝试以下操作:-

it('buildMyBody should change myBody according to params', () => {
    const myBody= new buildMyBodyModel();
    const params = { name: 'Jack', customColor: 'Orange', number: 3 };
    (component as any).buildMyBody(params, myBody);
    expect(myBody).toEqual({ name: 'Jack', color: 'Orange', count: 4 });
});

如果您只想测试主体是否正确构建,那么只测试buildMyBody()函数是否就足够了?嗯,测试私有函数是一个很好的实践?当然,您应该测试系统中的每个函数。