[design][test] published interfaceと供に提供するもの

コンポーネントレベルでのpublished interfaceを作成するときには、必ずMockとAPIのContractクラスを提供するようにしています。これをやっておくだけで、提供したMockとContractを最低限満たすコンポーネントが提供されることになり、結合時に問題が発生しにくくなります。

また、Mockで想定する以外のデータをコンポーネント担当者が作る場合も、Contractクラスでのチェックがあるため、明らかにテストデータが間違う危険性が減ります。

コードレベルで動かせるAPIがあると仕様の理解がしやすく、結合テストレベルでの問題が減るためとても重要だと思っています。