サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
zenn.dev/abekoh
はじめに 本記事では matryer/moq というモックライブラリを利用したGoのテストのプラクティスについて紹介します。 moqはモック(狭義にはスパイ)・スタブの機能を持っており、その扱い方は非常にシンプルで直感的に扱えます。 その使い勝手に良さについて個人的にかなり気に入っており、実際にプロダクトのテストコードに利用しています。 一方で、moqはシンプルでユーティリティ的な側面が強いため、使い方を誤ると逆に管理しにくいテストコードになってしまいます。 本記事では『単体テストの考え方/使い方』という書籍を参考にしつつ、モック・スタブとしての役割に注意してmoqの使い方を提案してみます。 前提 いわゆるGoらしさの追求はこだわらない方針とします。具体的には、テーブル駆動は一旦忘れ、stretchr/testify を積極的に使うこととします。応用すればそうしないパターンでもいい感じに書
業務で以下のような問題にぶつかりました。 「Goで出力したZIPファイルをWindowsのエクスプローラーで開くと更新日時が9時間ずれてしまう。7-Zipなどサードパーティを利用したり、Macで展開した場合は発生しない。」 調査していくと、ZIPの仕様に関する問題のようでした。参考になるまとまった資料がなかったのでまとめてみます。 TL;DR ZIPの標準仕様ではファイルの更新日時のタイムゾーン情報は失われてしまう 拡張フィールドを使うとタイムゾーン付きorUTC固定で更新日時を付与できる 拡張フィールドへの対応状況は圧縮/解凍ソフトによって異なる 事象の再現 再現するGoのコードが次の通りです。 package main import ( "archive/zip" "log" "os" "time" ) var JST *time.Location func init() { os.S
本記事はドメイン駆動設計(DDD) Advent Calendar 2021 25日目の記事です。 「もっとビジネス変化に耐えられる設計を目指したい」「ただデータをやりとりするだけなのに複雑化してしまうのを防ぎたい」 様々な動機からドメイン駆動設計に入門しようとする方がいると思います。 自分もエンジニアとして働きはじめて、「どうしてすぐに変更しにくくなってしまうのか」「より柔軟な設計にするにはどうすればよいか」と悩むことが多くなり、良い設計手法を探って出会ったのがドメイン駆動設計でした。 最初はドメイン駆動設計関連の本ばかりを読んでいたのですが、途中から「これってドメイン駆動設計というよりはオブジェクト指向の話では?」とオブジェクト指向に興味を移し、さらに「より変化に強いプロダクト開発するにはチームから変化させないとまずいのでは?」とアジャイル開発に興味が移りました。 本記事では、ドメイン
このページを最初にブックマークしてみませんか?
『abekohさんの記事一覧』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く