.net 模拟IStringLocalizer与nsubstitute
我正试图让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”
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?