如何转换同步反应异步测试?

时间:2019-12-16 09:32:05

标签: reactjs jestjs enzyme ag-grid

以下是对ag-grid的测试。可以在https://www.ag-grid.com/javascript-grid-testing-react/

找到文档

当测试与test1异步时,我的测试中很少有CI失败的。有什么办法使它一致吗?我尝试用test2方法使其同步,但这也失败了。有没有更好的方法来进行一致性测试?

  describe('ag grid test 1', () => {
      let agGridReact;
      let component;
      const defaultProps = {
          //.....
      }

      beforeEach((done) => {
          component = mount(<CustomAGGridComp {...defaultProps} />);
          agGridReact = component.find(AgGridReact).instance();
          // don't start our tests until the grid is ready
          ensureGridApiHasBeenSet(component).then(() => done(), () => fail("Grid API not set within expected time limits"));

      });


      it('stateful component returns a valid component instance', async () => {
          expect(agGridReact.api).toBeTruthy();

          //..use the Grid API...

          var event1 = {
              type: 'cellClicked', rowIndex: 0, column: { field: "isgfg", colId: "isgfg", headerName: "Property 2" },
              event: {
                  ctrlKey: false,
                  shiftKey: false
              }
          }
          await agGridReact.api.dispatchEvent(event1)

          //some expect statements


      })
  });


  describe('ag grid test 2', () => {
      let agGridReact;
      let component;
      const defaultProps = {
          //.....
      }

      beforeEach((done) => {
          component = mount(<CustomAGGridComp {...defaultProps} />);
          agGridReact = component.find(AgGridReact).instance();
          // don't start our tests until the grid is ready
          ensureGridApiHasBeenSet(component).then(() => done(), () => fail("Grid API not set within expected time limits"));

      });


      it('stateful component returns a valid component instance', () => {
          expect(agGridReact.api).toBeTruthy();

          //..use the Grid API...

          var event1 = {
              type: 'cellClicked', rowIndex: 0, column: { field: "isgfg", colId: "isgfg", headerName: "Property 2" },
              event: {
                  ctrlKey: false,
                  shiftKey: false
              }
          }
          agGridReact.api.dispatchEvent(event1);

          setTimeout(() => {
              //some expect statements
          }, 500);


      })
  });

0 个答案:

没有答案