在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()函数是否就足够了?嗯,测试私有函数是一个很好的实践?当然,您应该测试系统中的每个函数。