Testing 如何确保对象数组中的所有项目在mocha中具有所有必需的键?

Testing 如何确保对象数组中的所有项目在mocha中具有所有必需的键?,testing,jestjs,mocha.js,Testing,Jestjs,Mocha.js,我是测试新手,我有一个对象数组的结果,我想确保数组中的每个项都有必需的属性,结果如下: // result_threads = [{a:1,b:2},{a:3,b:4}] 我想做一个这样的测试: chai_module .request(server) .get(`/api/threads/${test_board_id}`) .end((get_threads_error, response) => { const { status:

我是测试新手,我有一个对象数组的结果,我想确保数组中的每个项都有必需的属性,结果如下:

// result_threads = [{a:1,b:2},{a:3,b:4}]
我想做一个这样的测试:

chai_module
      .request(server)
      .get(`/api/threads/${test_board_id}`)
      .end((get_threads_error, response) => {
        const { status: actual_status } = response;
        const { threads: result_threads } = response.body
        // THE TEST I WANT TO MAKE
        assert.isArray(result_threads).to.contain.an.item.hasAllKeys(['a','b']);


        done();
      });

如何确保数组中的项具有所需的所有键?

一种方法是分两步验证断言。首先验证是否有一个数组,然后遍历该数组并验证每个项是否具有所需的键:

chai_module
  .request(server)
  .get(`/api/threads/${test_board_id}`)
  .end((get_threads_error, response) => {
    const { status: actual_status } = response;
    const { threads: result_threads } = response.body

    assert.isArray(result_threads);
    result_threads.forEach((item) => {
       assert.hasAllKeys(item, ['a', 'b']);
    });

    done();
  });