angular - 如何在角度单元测试中发送请求之前验证正文
问题描述
我在进行单元测试时遇到了一些麻烦,我阅读了很多文章,但没有一篇对我有帮助,似乎很难进行简单的测试。
我需要测试这个函数,它返回一个Observable
,我实际上只需要验证是否myBody
正确构建,我不想制作一个实际的HttpRequest
.
public myCoolFunction(params) {
const myBody= new buildMyBodyModel();
this.buildMyBody(params, myBody); // private function, will set the values for me
return this.sendService.send(myBody); // make a htppPostRequest and returns to me a Observeble
}
private buildMyBody(params, myBody){
myBody.name = params.name;
myBody.color = params.customColor;
myBody.count = params.number + 1;
}
预期myBody
:
{
name = 'Jack';
color = 'Orange';
count = 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 });
});
推荐阅读
- python - 使用 Python 3 和 Cloud NDB 的 msgprop.EnumProperty 和 messages.Enum 的最佳实践是什么?
- c# - 从 Razor 页面发布会清除模型值 - 什么时候不应该?
- java - 我正在尝试使用 Apache POI 库读取 excel 文件,但是当我尝试读取单元格类型时,我得到一个空指针异常
- react-native - 位置错误“谷歌播放服务不可用”,反应原生
- java - 如何让会员在安卓应用上互相聊天
- html - 上传照片按钮未打开任何窗口以从中选择文件
- node.js - npm config 并添加更多而不是仅使用 default.json
- python - ModelForm在Django中没有指定模型类错误
- azure - Azure DevOps 服务器无法使用作为订阅参与者的服务主体创建 Azure 资源
- javascript - Chartjs:使用 chartjs-plugin-datalabels 在较小的数据集中重叠数据标签