mocha如何測試異步

Question

如何測試異步(子組件API接受的是Promise方法)

原因

因爲測實際的Promise方法比較困難,所以用typemoq

解決方案

嘗試typemoq

https://github.com/florinn/typemoq

測試文件裏面可以這麼寫

 const imageProviderMock = TypeMoq.Mock.ofType<IImageProvider>();

      imageProviderMock

        .setup(f => f.fetch(TypeMoq.It.isAny()))

        .returns(() => Promise.resolve(imageInfos));

 

      const gallery = await shallow(

        <Gallery

          loggerFactory={loggerFactory}

          translator={translator}

          imageProvider={imageProviderMock.object}

          cache={cacheMock.object}

          filterProvider={filterProviderMock.object}

        />

      );

 

      imageProviderMock.verify(

        x => x.fetch(TypeMoq.It.isAny()),

        TypeMoq.Times.atLeastOnce()

      );

後面可以跟一些組件渲染的測試

expect(gallery.find(ImageFrame)).have.lengthOf(2);

//模擬一個promise.resolve操作
const imageProviderMock = TypeMoq.Mock.ofType<IImageProvider>();

      imageProviderMock

        .setup(f => f.fetch(TypeMoq.It.isAny()))

        .returns(() => Promise.resolve(imageInfos));

 
//組件淺渲染用async和await
      const gallery = await shallow(

        <Gallery

          loggerFactory={loggerFactory}

          translator={translator}

          imageProvider={imageProviderMock.object}

          cache={cacheMock.object}

          filterProvider={filterProviderMock.object}

        />

      );

 
//證明promise.resolve至少被調用一次
      imageProviderMock.verify(

        x => x.fetch(TypeMoq.It.isAny()),

        TypeMoq.Times.atLeastOnce()

      );

//後面可以跟一些組件渲染的測試

expect(gallery.find(ImageFrame)).have.lengthOf(2);

 

發佈了80 篇原創文章 · 獲贊 18 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章