Reactjs Jest/酶单元测试

Reactjs Jest/酶单元测试,reactjs,unit-testing,mocking,jestjs,enzyme,Reactjs,Unit Testing,Mocking,Jestjs,Enzyme,我有以下需要测试的功能 export function buildOptions(options) { var oList=[]; for (var i=0; i < options.length; i++) { oList.push ( <option key={"optId"+i} value={options[i]["id"]}> {op

我有以下需要测试的功能

    export function buildOptions(options) { 
        var oList=[];   
        for (var i=0; i < options.length; i++) {
            oList.push (
              <option key={"optId"+i} value={options[i]["id"]}>
                  {options[i]["name"]}
              </option>
            )
         }    
         return oList;
      }
收到:

"[{\"type\":\"option\",\"key\":\"optId1\",\"ref\":null,\"props\":{\"value\":1,\"children\":\"A\"},\"_owner\":null,\"_store\":{}},{\"type\":\"option\",\"key\":\"optId2\",\"ref\":null,\"props\":{\"value\":2,\"children\":\"B\"},\"_owner\":null,\"_store\":{}}]"

您的选项缺少
值,因此不匹配。也许可以试试这个:

  it ('should return an array containing the populated options', () => {
      const teams = [
        { "name": "A", "id": 1 },
        { "name": "B", "id": 2 }
      ];
      const EXPECTED_OUTPUT = JSON.stringify([
        <option key="optId1" value={1}>A</option>,
        <option key="optId2" value={2}>B</option>
      ]);

      expect(JSON.stringify(Helper.buildOptions(teams))).toMatch(EXPECTED_OUTPUT);
  });

更多关于Jest测试的文档-expect:

从查看您的数据来看,似乎错误实际上在您的预期中。在函数中分配键optId1时,您希望键为null,因此存在不匹配。您的“预期”值可能还应该包含与实际值匹配的键。对于更一般的情况,如果要检查输出是否包含任何特定元素,如何修改测试?例如,在本例中,是否需要检查该选项是否存在并检查其长度?
  it ('should return an array containing the populated options', () => {
      const teams = [
        { "name": "A", "id": 1 },
        { "name": "B", "id": 2 }
      ];
      const EXPECTED_OUTPUT = JSON.stringify([
        <option key="optId1" value={1}>A</option>,
        <option key="optId2" value={2}>B</option>
      ]);

      expect(JSON.stringify(Helper.buildOptions(teams))).toMatch(EXPECTED_OUTPUT);
  });
it('should return an array containing the populated options', () => {
  const teams = [
    { "name": "A", "id": 1 },
    { "name": "B", "id": 2 }
  ];
  const result = Helper.buildOptions(teams);

  // Check if option exist and have length of 2
  expect(result).toBeTruthy();
  expect(result).toHaveLength(2);

  // Check if the options is as expected
  expect(result[0]).toEqual(<option key="optId1" value={1}>A</option>);
  expect(result[1]).toEqual(<option key="optId2" value={2}>B</option>);
});