使用 IStringLocalizer<T> 进行单元测试 class

Unit Testing class with IStringLocalizer<T>

我有一个带有构造函数的 class,它得到了一个 IStringLocalizer<T> 注入。

public MailBuilder(IStringLocalizer<MailTexte> stringLocalizer)
{ ... }

我正在尝试设置伪造的字符串定位器:

A.CallTo(() => this.stringLocalizer["ConfirmationMailTitel"]).Returns(subject);

但我收到消息

IReturnValueArgumentValidationConfiguration LocalizedString does not contain a definition for 'Returns'

IStringLocalizer 的界面如下所示:

LocalizedString this[string name] { get; }

如何在 FakeItEasy 中正确设置此索引器?

提前致谢

你得到异常是因为你很可能没有返回正确的类型(即 subject

如界面所示,索引器returns一个LocalizedString

这意味着需要相应地配置模拟。

//...

var stringLocalizer = A.Fake<IStringLocalizer<MailTexte>>();
key = "ConfirmationMailTitel";
var localizedString = new LocalizedString(key, "desired localised value here");

A.CallTo(() => stringLocalizer["ConfirmationMailTitel"]).Returns(localizedString);

//...