Moq でインデクサーに対する振る舞いをどう実装したら良いかわからなかったので、調べてみました。
具体的には、ASP.NET Core で多言語対応を行う際に、IStringLocalizer
に対する振る舞いを Moq で実装する必要がありました。
この場合、以下のように実装すれば OK です。
var mock = new Mock<IStringLocalizer<HomeController>>();
mock.Setup(p => p[It.IsAny<string>()]).Returns(new LocalizedString("foo", "bar"));
var controller = new HomeController(mock.Object);