ASP.NET Core の Controller で IActionResult な戻り値になっている関数はよくあります。
そんな Controller の戻り値を単体テストで呼び出すときに ステータスコードを判定したい というのはよくあると思います。
解決方法
Controller のメソッドの戻り値を OK(200) の場合は、 OkObjectResult にキャストします。 C# の is キーワードを使うことで、キャストできるか判定することができます。
コード
public class hoge { public class HogeController { [HttpGet()] public IActionResult<String> LoadGreeting() => OK("Hello World"); } [Fact] public void IActionResultをテストするよー() { var hogeController = new HogeController(); var greetingResult = hogeController.LoadGreeting(); // True のテストケースが通った場合は、 希望するステータスコードになっている。 Assert.True(greetingResult is OkObjectResult); // 指定するステータスコードになっていないことを確かめている Assert.False(greetingResult is NotFoundObjectResult); // 返ってきた値自体を確かめたい場合は、 as なりを使ってキャストしてあげる必要がある。 var responseObject = greetingResult as OkObjectResult; Assert.NotNull(responseObject); // .Value で値にアクセスすることができるが、Object型なのでキャストしてから利用する Assert.Equals("Hello World", (String)responseObject.Value); } }