Cover Image for 読書メモ:Game Development with Rust and WebAssembly (Chapter 9)

読書メモ:Game Development with Rust and WebAssembly (Chapter 9)

概要

↑を読んだメモ

サンプルコードを書いて遊んでたリポジトリは以下

メモ

9章 テスト、デバッグ、パフォーマンス

9.2

  • unit test は cargo test で
  • 結合テストは wasm-pack test で

9.2.4

  • 継ぎ目( seam)
    • その場にあるコードを変更することなくプログラムの挙動を変更できる場所
    • mockやstubを注入できるポイントの意?
  • 効果点(enabling point)
    • 継ぎ目への挿入を実現できるコード上の場所
  • #[cfg(test)] でuseを入れ替えるやり方

遭遇したエラー

wasm-pack test --headless --chrome だと失敗する...

Error: non-200 response code: 404                 
{"value":{"error":"invalid session id","message":"invalid session id","stacktrace":"0   chromedriver                        0x000000010500e6b8 chromedriver + 4937400\n1   chromedriver                        0x0000000105005b73 chromedriver + 4901747\n2   chromedriver                        0x0000000104bc3490 chromedriver + 435344\n3   chromedriver                        0x0000000104bf844b chromedriver + 652363\n4   chromedriver                        0x0000000104c2af16 chromedriver + 859926\n5   chromedriver                        0x0000000104c26c9d chromedriver + 842909\n6   chromedriver                        0x0000000104c262e7 chromedriver + 840423\n7   chromedriver                        0x0000000104b8d2da chromedriver + 213722\n8   chromedriver                        0x0000000104fca2ad chromedriver + 4657837\n9   chromedriver                        0x0000000104fcf130 chromedriver + 4677936\n10  chromedriver                        0x0000000104fd5def chromedriver + 4705775\n11  chromedriver                        0x0000000104fd005a chromedriver + 4681818\n12  chromedriver                        0x0000000104fa292c chromedriver + 4495660\n13  chromedriver                        0x0000000104b8bd33 chromedriver + 208179\n14  dyld                                0x0000000205c1441f start + 1903\n"}}
error: test failed, to rerun pass `--lib`

  • wasm-pack test --chrome だと成功する
  • よくみたら chromedriver 入ってなかった...
    • brew install chromedriver で解決

9.3

  • wasm をデバッガでデバッグする方法はない
  • ログ/スタックトレース/リントで地味にデバッグしていく
    • printデバッグはどのような環境でも使用できることが保証されているほぼ唯一のデバッグ手法
  • 製品版ではログを全て削除する必要がある
    • webシステムだと考えなくていい観点...