ApplicationShouldBeInstalled(app)
正しく動作していることを確認するために呼び出す単体テストがあります。以下の実際の製品コードもそのメソッドを呼び出しているため、誤ってアプリをインストールすることはありません。ただし、開発者がチェックが行われたコード行を削除することを妨げるものは何もありません。ApplicationShouldBeInstalled(app)
テストはメソッドではなくメソッドをテストしているため、私の単体テストはそれをキャッチしませんInstallApplications()
。
InstallApplications()
アプリケーションをインストールしようとするため、テスト コードから呼び出すことはできません。InstallApplication(app)
インターフェイスでモックできる別のクラスではなく、同じクラスのメソッドです。InstallApplications() が常にそのチェックを実行するようにする方法はありますか? 別のクラスに移動してモックできると思いApplicationShouldBeInstalled(app)
ますが、テスト/モックのためだけにコードを移動しています。より良い方法はありますか?
public void InstallApplications()
{
foreach (App app in this._apps)
{
if (!ApplicationShouldBeInstalled(app)) { continue; }
InstallApplication(app);
}
}
モッキングオプションは次のようになります。Container
ライブで実行すると実際の実装が返され、テストを実行するとモックが返されます。
public void InstallApplications()
{
foreach (App app in this._apps)
{
if (!ApplicationShouldBeInstalled(app)) { continue; }
Container.Resolve<IInstaller>().InstallApplication(app);
}
}