首页 > 解决方案 > 提取 Json 数据并使用 Protractor 验证值

问题描述

我需要从 Json 文件中读取数据,然后断言其键的值与其他一些值匹配。下面是我的示例代码:

var fs = require('fs');

let StudentData = 'StudentData.json';

describe('Test for Json Data', function (){

    let Data = {

        a: 'a',
        b: 'bb',
        c: 'ccc'
    };

    let DT = JSON.stringify(Data);

    fs.writeFileSync(StudentData ,DT)


    it('test for C', function(){

        let Uploaded_data = fs.readFileSync(StudentData);

        let Data = JSON.parse(Uploaded_data);

        let c = Data['c'];

        console.log(c);

        expect(c.toBe('ccc'));

    })

});

当我运行脚本时,我收到以下错误:

 1) Test for Json Data test for C
  Message:
    Failed: c.toBe is not a function
  Stack:
    TypeError: c.toBe is not a function

我如何在这里验证“c”的值?

标签: javascriptarraysjsonjasmine

解决方案


我同意@jonrsharpe 你应该这样做expect(c).toBe(...)。还有一些其他的事情需要注意。我会将您希望在it块之前发生的方法放在 a beforeAllorbeforeEach方法中,以确保它们在 it 块之前执行。

连同@jonrsharpe 的评论一起清理它,我会执行以下操作:

const fs = require('fs');
const studentData = 'StudentData.json';

describe('Test for Json Data', () => {
  const data = {
    a: 'a',
    b: 'bb',
    c: 'ccc'
  };

  beforeAll(() => {
    // make sure that you specify this in beforeAll or beforeEach
    fs.writeFileSync(studentData ,JSON.stringify(data))
  });

  it('test for C', () => {
    const uploadedData = fs.readFileSync(StudentData);
    const parsedData = JSON.parse(uploadedData);
    const c = parsedData['c'];
    console.log(c);
    expect(c)toBe('ccc'));
  });
});

推荐阅读