angular - 必须在 before 函数或 spec angular 中创建间谍
问题描述
我有这个私人功能:
private GetChargesByClient(clientId: number): Observable<any[]> {
const ds = new Date();
const dateTocompare = new Date(ds.setFullYear(ds.getFullYear() - 1));
return this.getCharges(id).pipe(map(res => res.filter(x => x.date >= dateTocompare)));
}
我为它写了一个单元测试:
describe('getAllCharges', () => {
const _response: any[] =[
{
"type": "Ongoing ",
"date": 1562108400000,
"totalPayment": "11.54",
"document": 37
},
{
"type": "Ongoing ",
"date": 1559689200000,
"totalPayment": "11.04",
"document": 37
}
];
it('then', (done) => {
const service: chargesService = TestBed.get(chargesService);
spyOn<any>(service, 'getCharges').and.returnValue(of(_response));
const res = service['GetChargesByClient'](130).subscribe(() => done);
expect(res).toBe(null);
});
});
但是当我运行测试时出现错误
必须在 before 函数或规范中创建间谍
我对私有方法进行了其他测试,它们运行正常。谁能发现我遗漏的任何东西
解决方案
一件事,res
将是一个订阅对象,而不是发出的值(所以,不是空的)。另一个,我不确定done
这里的目的是什么(可能是把 Jasmine 扔掉)。
尝试
it('could use a more descriptive expectation', () => {
const service: chargesService = TestBed.get(chargesService);
spyOn<any>(service, 'getCharges').and.returnValue(of(_response));
service['GetChargesByClient'](130)
.subscribe((result) => expect(result).toBeNull());
});
推荐阅读
- python - 遇到问题:“int”对象不可调用
- arrays - 如何在 Powershell 中引用对象内的数组
- azure - 在 Cloud shell 中运行 az cli 命令失败,并出现 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8e in position 0: invalid start byte
- python - 如何以只读方式禁用 azure python 函数
- c# - Xamarin Forms 将标签文本绑定到字典的值
- unit-testing - 当`Result`不是`Copy`时设计单元测试
- node.js - 用户操作后使用 REST API 反应应用同步数据
- oracle - Oracle - 在一行中设置多个 col 格式
- python - 如何使用预训练的 tensorflowlite 模型进行输入解释
- amazon-web-services - Kubectl 命令抛出错误:无法连接到服务器:获取凭据:exec:退出状态 2