やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

JSで単体テストする(console.assert)

 フレームワークもあるが、まずは標準APIを使ってみる。

情報源

やってみる

index.html

<script>
function add(a, b) {
    return a + b;
}
// unit test
console.assert(1 === add(0, 0));
</script>

 ブラウザでindex.htmlファイルを開き、Ctrl+Shift+Iで開発者ツールを開き、コンソールタブを表示すると、以下のようなエラー表示が出る。

Assertion failed: console.assert    index.html:6

 この場合、テストコードのほうがまちがっているので、テストを修正する。

console.assert(0 === add(0, 0));

 F5キーで更新し再実行すると、エラーが消える。テストクリア。

ファイルを分けたい

  • index.html
  • main.js
  • add.js
  • test-add.js

index.html

<script type="module" src="main.js"></script>

main.js

import {add} from './add.js';
import {testAdd} from './test-add.js';
window.addEventListener('load', (event) => {
    console.log(add(1, 2));
    testAdd();
});

add.js

export function add(a, b) {
    return a + b;
}

test-add.js

import {add} from './add.js';
export function testAdd() {
    console.assert(1 === add(0, 0));
}

 実行する。ブラウザでindex.htmlファイルを開き、Ctrl+Shift+Iで開発者ツールを開き、コンソールタブを表示すると、以下のようなエラー表示が出る。

3           main.js:5
Assertion failed: console.assert    test-add.js:3

 一気に面倒くさくなった。importとかexportなんて書きたくない。

所感

 テストは一応できたが、課題が多すぎる。本番環境からはテストコードを排除したいし、エラーメッセージやテスト件数の表示なども整えたい。それらを考えると、とても実装が面倒くさい。だからテスト用フレームワークを使いたくなる。

対象環境

$ uname -a
Linux raspberrypi 5.10.63-v7l+ #1496 SMP Wed Dec 1 15:58:56 GMT 2021 armv7l GNU/Linux