【问题标题】:jest test only returning strings inside object开玩笑测试只返回对象内的字符串
【发布时间】:2020-03-20 23:49:08
【问题描述】:

我正在尝试运行一个玩笑测试,并认为期望,成为问题的一部分,因为我认为我正在比较的两个对象(数据、地理名称)是相同的。事实证明,他们不是。我的数据对象如下所示:

{"lat": "lat", "lng": "lng"}

znc 我的地名记录正确:

{lat: 'lat', lng: 'lng'}

我不知道为什么测试会在对象数据字符串中生成所有内容,我无法弄清楚。这就是为什么我的期望没有执行。

这是我的代码:

describe('geonames', (url = 'https://geonamesapi.com', geonames = {lat: 'lat', lng: 'lng'}, 
    projectData = {
                zero: {
                    date: '03/19/2021',
                    place: 'city, state'
                },
                one: {
                    coord: 
                        {
                            lat: '', 
                            lng: ''
                        }, 
                    date: '', 
                    place: '',
                    location1: '', 
                    location2: ''
                }, 
                two: {
                    month: '', 
                    day: '', 
                    year: ''
                }, 
                three: {
                    high: '', 
                    low: '', 
                    forecast: ''
                },
                four: {
                    image: ''
                }}, place = '', date = '', place1 = '', place2 = '', place_split = '', data = '') => {

                    place = projectData.zero.place;
                    projectData.zero.date = date
                    projectData.one.date = date
                    place_split = place.split(', ')
                    place1 = place_split[0]
                    place2 = place_split[1]
                    projectData.one.place = place
                    projectData.one.location1 = place1
                    projectData.one.location2 = place2
                    projectData.one.coord.lat = geonames.lat
                    projectData.one.coord.lng = geonames.lng
    it('can get coordinates', async() => {

        fetchMock.once(url, {
            status: 200,
            statusText: 'OK',
            headers: {'Content-Type': 'application/json'},
            sendAsJson: true,
            body: JSON.stringify(geonames)
        }, {method: 'GET'});
        fetch(url, {
            method: 'GET',
            body: JSON.stringify({data: 'Received Payload'}),
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
            }
        })
        .then(function(req){
            expect(req.status).toEqual(200);

            console.log(data)
            return req.json();
        })
        .then(function (json) {
            console.log(json.body);
            data = json.body;
            console.log(projectData)
            console.log(data)
            console.log(geonames)
            expect(data).toMatchObject(geonames)
            data = projectData
            return data;
        })
        .then(async function(data) {
            console.log(data);
            expect(data).toEqual(projectData);
        })
    }) 
})

【问题讨论】:

    标签: javascript node.js express jestjs


    【解决方案1】:

    我明白了。我不得不改变:

    body: JSON.stringify(geonames)
    

    body: {geonames}
    

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2021-08-19
      • 2018-05-25
      • 1970-01-01
      • 2018-09-05
      • 2020-10-24
      • 2018-12-11
      • 2020-02-06
      • 2020-03-25
      相关资源
      最近更新 更多