【问题标题】:Mocking IStringLocalizer with nsubstitute用 nsubstitute 模拟 IStringLocalizer
【发布时间】:2017-05-17 09:34:16
【问题描述】:

我正在尝试让 nsubstitute 像这样模拟 IStringLocalizer 的实例

var mock = Substitute.For<IStringLocalizer<SomeClass>>();
mock["Foo"].Returns("Bar");
Assert.That(mock["Foo"], Is.EqualTo("Bar"));

我该怎么做?

【问题讨论】:

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

标签: .net unit-testing mocking nsubstitute


【解决方案1】:

如果你想要一个简单地将资源代码作为翻译结果返回的通用模拟,你可以使用这个:

mock[Arg.Any<string>()].Returns(p => new LocalizedString((string)p[0], (string)p[0]));

【讨论】:

    【解决方案2】:

    试试这个:

    var mock = Substitute.For<IStringLocalizer<SomeClass>>();
    
    mock["Foo"].Returns(new LocalizedString("Foo", "XXXXXXXA"));
    Console.WriteLine(mock["Foo"]); // -> Write "XXXXXXXA"
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多