ASP.NET Core - Minimal APIをWebApplicationFactoryでテストする
ASP.NET Core 6のMinimal APIを単体テストするとき、StartupクラスがないのでWebApplicationFactoryでテストするにはどうするんだろう?と思って調べたらDocsにありました。
6.0 での新しい最小ホスティング モデルに移行されたコード サンプル | Microsoft Docs
InternalsVisibleTo属性を使う方法とProgramクラスをpublicにする方法をがあるようです。
InternalsVisibleTo属性を使う
<ItemGroup>
<InternalsVisibleTo Include="MyTestProject" />
</ItemGroup>
または
[assembly: InternalsVisibleTo("MyTestProject")]
.csprojにInternalsVisibleToを指定できることを初めて知りました。
MSBuild プロジェクトの共通項目 - MSBuild | Microsoft Docs
Programクラスをpublicにする
public partial class Program {
}
私はIClassFixtureを使うことが多いので、Programクラスをpublicにする方法を使うのかなと思いました。
public class SampleControllerTest : IClassFixture<WebApplicationFactory<Program>> {
private readonly WebApplicationFactory<Program> _factory;
public SampleControllerTest(WebApplicationFactory<Program> factory) {
_factory = factory;
}
}