我正在尝试使用jasmine在Angular 2中对服务进行单元测试,并且需要在Response Options类的body参数中添加一个JSON数据数组,我尝试了各种方法,但都失败了,请参阅下面的代码片段:
it('returns a list of employees with correct first-employee data', done => {
//Arrange
mockBackend.connections.subscribe((c: any) => {
let response = new ResponseOptions({
body: `[
{
travelReasonId:1,
name:'Operator visit'
},
{
travelReasonId:2,
name:'3rd Party visit'
},
{
travelReasonId:3,
name:'MGS visit'
}
]`
});
c.mockRespond(new Response(response));
});
// Act
let result: any;
travelReasonService.getAllTravelReasons()
.subscribe((_result) => { result = _result; });
// Assert
let firstValue = {
travelReasonId: 1,
name: 'Operator visit'
};
console.log(result);
expect(result[0]).toEqual(firstValue);
expect(result.length).toEqual(3);
});测试结果表明: SyntaxError: JSON Parse error: Expected '}‘(第321行)当为有问题的代码运行测试时,如果有任何帮助,将不胜感激。
发布于 2016-08-23 17:02:46
关于JB Nizet建议的我实现的解决方案,请参阅以下内容
it('returns a list with two employees', done => {
//Arrange
let travelReasons: TravelReason[];
travelReasons = [];
let travelReason_1 = new TravelReason();
let travelReason_2 = new TravelReason();
travelReason_1.name = 'Operator visit';
travelReason_1.travelReasonId = 1;
travelReason_2.name = '3rd Party visit';
travelReason_2.travelReasonId = 2;
travelReasons.push(travelReason_1);
travelReasons.push(travelReason_2);
mockBackend.connections.subscribe((c: any) => {
let response = new ResponseOptions({
body: JSON.stringify(travelReasons)
});
c.mockRespond(new Response(response));
});
// Act
let result: any;
travelReasonService.getAllTravelReasons()
.subscribe((_result) => { result = _result; });
// Assert
let firstValue = {
travelReasonId: 1,
name: 'Operator visit'
};
let secondValue = {
'travelReasonId': 2,
'name': '3rd Party visit'
};
expect(result[0]).toEqual(firstValue);
expect(result[1]).toEqual(secondValue);
expect(result.length).toEqual(2);
done();
}); https://stackoverflow.com/questions/39084303
复制相似问题