2017-10-24 2 views
1

Ich bin sehr neu zu Preact und ich muss Einheit Testfälle für eine Anwendung in Preact schreiben. Ich kann finden, dass Scherz und Enzym für das selbe verwendet werden können, aber ich laufe jedes Mal auf Fehler. Kann jemand einen Blog oder eine Anleitung zum Schreiben von Unit-Testfällen auf Preact vorschlagen?Schreibgerät Testfälle für Preact

+0

Welche Fehler haben Sie? Ich untersuche die Verwendung von Enzymen jetzt, da die Version 3 veröffentlicht wurde und zum Testen von mehr Frameworks und nicht nur von React verwendet werden könnte. FWIW, dieses Problem im Github von preact hat einige Optionen: https://github.com/developit/preact/issues/658 –

Antwort

0

This preact boilerplate project hat ein Setup mit Komponententests enthalten. Sie verwenden jest, um die Tests auszuführen.

Unten ist, wie ich verstehe, die relevanten Teile zum Laufen zu bringen.

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}" 
    ] 
    }, 

Test/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'); 
    }); 
}); 
Verwandte Themen