スマレジエンジニアyushiのブログ

スマレジエンジニアのブログ

【将棋盤 第13回】TypeScriptのclassのテストコードを記述してみる

コツコツ将棋盤を作ってます。

使用技術

  • Vue.js3
  • Vite
  • SCSS

yushi-dev.hatenablog.com

公開ページ

https://nek0meshi.github.io/shogi-board/

今回は、vueファイルのテストコードを書いてみます。

ライブラリの導入

前回の記事で導入済みです。

yushi-dev.hatenablog.com

(@types/jest, ts-jest, typescript)

テストコードの記述

import { Piece, PieceType } from '../src/pieces'

describe('pieces.ts', () => {
  it('駒の生成1', () => {
    const piece = new Piece('king', true, 5, 1)
    expect(piece.id).toBe(1)
    expect(piece.type).toBe('king')
    expect(piece.isFirst).toBe(true)
    expect(piece.column).toBe(5)
    expect(piece.row).toBe(1)
    expect(piece.name).toBe('玉')
    expect(piece.movableList).toEqual([
      [-1, -1], [0, -1], [1, -1], [-1, 0], [1, 0], [-1, 1], [0, 1], [1, 1],
    ])
    expect(piece.canPromote).toBe(false)
  })

  it('駒の生成2', () => {
    const piece = new Piece('king', false, 4, 4)
    expect(piece.id).toBe(2)
    expect(piece.type).toBe('king')
    expect(piece.isFirst).toBe(false)
    expect(piece.column).toBe(4)
    expect(piece.row).toBe(4)
    expect(piece.name).toBe('王')
    expect(piece.movableList).toEqual([
      [-1, -1], [0, -1], [1, -1], [-1, 0], [1, 0], [-1, 1], [0, 1], [1, 1],
    ])
    expect(piece.canPromote).toBe(false)
  })
})

toBeはプリミティブ型に対してしか使えず、配列に対してはtoEqualを使う必要があります。

Pull Request

https://github.com/nek0meshi/shogi-board/pull/23

まとめ

テストコードの記述を進めています。

TypeScriptで型もあり、テストコードもあり、となるとだいぶ安心感がありますね。