Help us understand the problem. What is going on with this article?

自分の考えていたUnitTestはUnitTestじゃなかった

はじめに

下記記事において、factoryが動かないので PHPUnit\Framework\TestCaseTests\TestCase にすればひとまず動くよって書きました。

https://qiita.com/kawagashira/items/7a2fa6550403944f793b

そこで湧いた疑問

  • そもそもこの2つの違いは?
    • Tests\TestCase はLaravelフレームワーク外の PHPUnit\Framework\TestCase を継承し、フレームワークのテストとしている(※表現要確認)
  • PHPUnit\Framework\TestCase でfactory呼べるようにならないのか
    • 上記理由(フレームワーク外)と後述より、自然には呼べないし、呼ぶべきでない
  • そもそもどういう経緯で Tests\TestCase から PHPUnit\Framework\TestCase を利用するようになったのか
    • 本題

調べてみた

https://github.com/laravel/framework/commit/e30a0c979d98f2f1f7b6c565e4002734237a280b#diff-2af5293bd425fda750632a8ba4fab87a
https://github.com/laravel/laravel/pull/5169

要約

  • PHPUnit\Framework\TestCase は単体テスト Tests\TestCase は結合テストで使ってね
    • 確かにFeatureテストをmakeすると Tests\TestCase がデフォルトで継承される
  • factory使うようなのはその時点で結合テストです

つまり

自分が書いたテストは結合テストだった。

認識としては、「モデルの1メソッドを動かして保存されてるかどうかをテストするのは単体テストやろ!」って感じだった。

とはいえ、プロジェクト的なUnitテストの認識がもうそうなっているので、しばらくは Tests\TestCase の書き換えで対応しそう。

感想

  • 認識を誤っていてすみませんでした。
  • そこ変えたときにドキュメントに差を書いてくれればよかったのに。
    • 読んでいるつもりですが書いていたら重ねてお詫び申し上げます

あとがき

友人が「Qiitaは翻訳サイト」って書いていて、まさにそうなったなぁと。

relic
日本企業の新規事業開発やイノベーション創出を支援する事業を展開しています。自社サービスでは、クラウドファンディングPF「ENjiNE」、MA・CRMプラットフォーム「Booster」、イノベーションマネジメントプラットフォーム「Throttle」があります。
https://relic.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした