为 Preact 编写单元测试用例

Posted

技术标签:

【中文标题】为 Preact 编写单元测试用例【英文标题】:Writing Unit Test Cases for Preact 【发布时间】:2018-04-04 19:33:47 【问题描述】:

我对 Preact 很陌生,我必须为 Preact 中的应用程序编写单元测试用例。我可以发现 jest 和酵素可以用于相同的用途,但我每次都会遇到错误。谁能推荐一些关于如何在 Preact 上编写单元测试用例的博客或教程?

【问题讨论】:

什么错误给了你?现在我正在研究使用酶,因为第 3 版已经发布并且可以用于测试更多的框架,而不仅仅是 React。 FWIW,preact 的 github 中的这个问题有几个选项:github.com/developit/preact/issues/658 【参考方案1】:

使用 preact-render-spy 查看this template project,它不依赖于反应和酶。另外还配置了 TypeScript。

【讨论】:

【参考方案2】:

更新

现在preact-enzyme-adapter 可用,这使得使用Enzyme 运行预测试成为可能。我还没有测试过,但我建议你尝试一下,因为 Enzyme 有一个非常好的工具带并且已经被广泛使用。

原答案

This preact boilerplate project 有一个包含单元测试的设置。他们正在使用jest 运行测试。

据我了解,以下是启动和运行的相关部分。

package.json

  "jest": 
    "setupFiles": [
      "./test/setup.js"
    ],
    "testURL": "http://localhost:8080",
    "moduleFileExtensions": [
      "js",
      "jsx"
    ],
    "moduleDirectories": [
      "node_modules"
    ],
    "moduleNameMapper": 
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
      "\\.(css|less)$": "identity-obj-proxy",
      "^react$": "preact-compat",
      "^react-dom$": "preact-compat"
    ,
    "collectCoverageFrom": [
      "src/**/*.js,jsx"
    ]
  ,

测试/setup.js:

import 'regenerator-runtime/runtime';
import chai from 'chai';
import assertJsx,  options  from 'preact-jsx-chai';

// when checking VDOM assertions, don't compare functions, just nodes and attributes:
options.functions = false;

// activate the JSX assertion extension:
chai.use(assertJsx);

global.sleep = ms => new Promise( resolve => setTimeout(resolve, ms) );

home/index.test.js

import  h  from 'preact';
import  expect  from 'chai';

import Home from '../../../src/components/home';

describe('components/home', () => 
    it('should show the home text', () => 
        const home = <Home/>;
        expect(home).to.contain(<h1>Home</h1>);
        expect(home).to.contain('Home component');
    );
);

【讨论】:

以上是关于为 Preact 编写单元测试用例的主要内容,如果未能解决你的问题,请参考以下文章

为控制器类编写负单元测试用例:spring boot

编写单元测试用例说明书的依据是啥

我们如何为嵌套函数编写单元测试用例(Jasmine)?

如何为以下代码段编写单元测试用例

如何使用 Kafka Streams 为应用程序编写单元测试用例

Spring Boot:如何为删除其余模板编写单元测试用例