.net 模拟IStringLocalizer与nsubstitute

.net 模拟IStringLocalizer与nsubstitute,.net,unit-testing,mocking,nsubstitute,.net,Unit Testing,Mocking,Nsubstitute,我正试图让nsubstitute模拟IStringLocalizer的一个实例,如下所示 var mock = Substitute.For<IStringLocalizer<SomeClass>>(); mock["Foo"].Returns("Bar"); Assert.That(mock["Foo"], Is.EqualTo("Bar")); var mock=Substitute.For(); 模拟[“Foo”]。返回(“Bar”); 断言(mock[“Foo”

我正试图让nsubstitute模拟
IStringLocalizer的一个实例,如下所示

var mock = Substitute.For<IStringLocalizer<SomeClass>>();
mock["Foo"].Returns("Bar");
Assert.That(mock["Foo"], Is.EqualTo("Bar"));
var mock=Substitute.For();
模拟[“Foo”]。返回(“Bar”);
断言(mock[“Foo”],即.EqualTo(“Bar”);
我该怎么做

试试这个:

var mock = Substitute.For<IStringLocalizer<SomeClass>>();

mock["Foo"].Returns(new LocalizedString("Foo", "XXXXXXXA"));
Console.WriteLine(mock["Foo"]); // -> Write "XXXXXXXA"
var mock=Substitute.For();
模拟[“Foo”]。返回(新本地化字符串(“Foo”,“xxxxxxx a”);
Console.WriteLine(mock[“Foo”]);/>写“XXXXXX A”
IStringLocalizer
的文档中,您可以看到这种类型的索引器是返回
LocalizedString
,它不能显式/隐式转换到
System.String
,因此您需要为
返回
方法显式指定新的
LocalizedString

尝试以下操作:

var mock = Substitute.For<IStringLocalizer<SomeClass>>();

mock["Foo"].Returns(new LocalizedString("Foo", "XXXXXXXA"));
Console.WriteLine(mock["Foo"]); // -> Write "XXXXXXXA"
var mock=Substitute.For();
模拟[“Foo”]。返回(新本地化字符串(“Foo”,“xxxxxxx a”);
Console.WriteLine(mock[“Foo”]);/>写“XXXXXX A”

IStringLocalizer
的文档中,您可以看到这种类型的索引器是返回
LocalizedString
,它不能显式/隐式转换到
System.String
,因此您需要为
返回
方法显式指定新的
LocalizedString

<将Resoure代码作为翻译结果返回,您可以使用:

mock[Arg.Any()]。返回(p=>newlocalizedstring((string)p[0],(string)p[0]);

如果您想要一个简单返回Resoure代码作为翻译结果的通用模拟,您可以使用:

mock[Arg.Any()]。返回(p=>newlocalizedstring((string)p[0],(string)p[0]);

什么不起作用?有错误信息吗?什么是IStringLocalizer?什么不起作用?有错误信息吗?什么是IStringLocalizer?