node.js v18のテストランナー纏めました
項目 | バージョン |
---|---|
node.js | v19.6.0 |
node.js v16まではjestやmochaなどでテストコードを書いてましたが、v18からnode.js自体にテストランナーが追加されました。
ちなみに、v18ではconsole.logが出力されなかったり、テストランナーが使えそうにないのでv19.6.0で確認しています。
import
node:test,node:assertからimportします。node:を省略するとimportできません。
import test from 'node:test' import assert from 'node:assert' test('1 test', async (t) => { assert.strictEqual(1, 1) })
これでテストコード完了です。
テスト実行
node --test
コマンドで実行します。
$ node --test TAP version 13 # Subtest: /mnt/c/~~~~~/index.test.mjs ok 1 - /mnt/c/~~~~~/index.test.mjs --- duration_ms: 91.0698 ... 1..1 # tests 1 # pass 1 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 99.9223
skip
testの第二引数に{skip:true}を指定するとそのtestはスキップされます。
import test from 'node:test' import assert from 'node:assert' test('1 test', { skip: true }, (t) => { assert.strictEqual(1, 2) })
node --test
で実行すると確かにskipされますが、skip数がカウントされていない気がします。
$ node --test // ~~~ 省略 # tests 1 # pass 1 # fail 0 # cancelled 0 # skipped 0 ★ # todo 0 # duration_ms 93.7253
only
testの第二引数に{only:true}を指定し、node --test --test-only
で実行すれば、そのtestだけが実行されます。
import test from 'node:test' import assert from 'node:assert' import {handler} from './index.mjs' test('1 test', (t) => { assert.strictEqual(1, 1) }) test('2 test', {only:true}, (t) => { assert.strictEqual(1, 1) })
node --test
とすると、{only:true}としていても無意味です。
describe/it
mochaのようにdescribe,itを使用することができます。describe,itはnote:testモジュールからimportします。
import {describe,it} from 'node:test' import assert from 'node:assert' describe('A thing', () => { it('1 test', () => { assert.strictEqual(1, 1) }) it('2 test', () => { assert.strictEqual(1, 1) }) })
describe.skipでスキップできます。describe.onlyはありません。
it.skipでスキップできます。it.onlyはありません。
どちらも、testのonlyと同様に{only:true}オプション指定して、node --test --test-only
でテスト実行する必要があります。
beforeEach,before,afterEach,after
それぞれ実行されるタイミングは以下の通りです。
メソッド | タイミング |
---|---|
beforeEach | 各テストスイート前に1回 |
before | テスト前に1回だけ |
afterEach | 各テストスイート後に1回 |
after | テスト後に1回だけ |
この辺はmochaと同じようです。node:testよりimportします。
import {beforeEach,before,afterEach,after} from 'node:test'
参考サイト
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント