首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular 2单元测试

Angular 2单元测试
EN

Stack Overflow用户
提问于 2016-08-23 00:18:33
回答 1查看 187关注 0票数 2

我正在尝试使用jasmine在Angular 2中对服务进行单元测试,并且需要在Response Options类的body参数中添加一个JSON数据数组,我尝试了各种方法,但都失败了,请参阅下面的代码片段:

代码语言:javascript
复制
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行)当为有问题的代码运行测试时,如果有任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-23 17:02:46

关于JB Nizet建议的我实现的解决方案,请参阅以下内容

代码语言:javascript
复制
 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();
    });    
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39084303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档