はじめに
Asp.net CoreのWebAPIに対して単体テストプロジェクトとテストコードを追加したところ、デバッグ実行で上記が表示されるように。。。
原因
挙動確認用にController
クラスにHTTPコマンドに対応していないpublicメソッドを追加したことが原因。
[ApiController]
[Route("api/[controller]")]
public class TodoListController : ControllerBase
{
private readonly ILogger<TodoListController> _logger;
private readonly TempDbContext _context;
public TodoListController(ILogger<TodoListController> logger, TempDbContext context)
{
_logger = logger;
_context = context;
}
[HttpGet(Name = "GetRecords")]
public async Task<ActionResult<IEnumerable<StudyRecord>>> GetAllStudyRecords()
{
return await _context.Records.ToListAsync();
}
+ public int TestMethod(int id)// <-このメソッドが追加されていることが原因
+ {
+ return id;
+ }
}
継承元のControllerBase
クラスの公式リファレンスやMVCの説明を見てみたのですがどうしてこのような挙動になっているかはわからなかったです。そのためさらに深い位置に原因がある可能性はあります。
WebAPIとしてのコントローラーにAPI以外のパブリックメソッドはいらないということでしょうか?
おわりに
単体テストプロジェクトとGithub actionsのCI/CD追加作業をしていたため、デバッグ実行する機会がなく問題のメソッド追加から発覚まで少々ラグがありました。
結果何が原因か全くわからずかなり焦りました。。。