【发布时间】:2019-07-02 12:11:47
【问题描述】:
我有一个服务类,它有一个使用 IAppConfig 的构造函数注入。 IAppConfig 有几个只有 getter 的属性。我想在我的测试项目中创建这个服务类的一个实例。
我的服务类
IAppConfig _appConfig;
public class PeopleService(IAppConfig appConfig)
{
_appConfig = appConfig;
}
AppConfig 接口
public interface IAppConfig
{
string BaseURL {get;}
string AnotherProperty {get;}
}
如何使用 NSubstitute 模拟 IAppConfig 来创建 PeopleService 的实例。
我试过下面的代码,但是我设置的属性是空字符串。
var _appConfig = Substitute.For<IAppConfig>();
_appConfig.BaseURL.Returns("http://localhost");
new PeopleService(_appConfig);
但是 _appConfig 中设置的属性不起作用。如果有人可以帮助我,我将不胜感激。
【问题讨论】:
-
文档中使用的属性确实有
{ get; set; }所以它可能不起作用,因为缺少一个 setter? -
它是一个只读属性,这意味着我们没有公共设置器。但是我们应该能够在类中设置它。我在接口的实际实现中已经这样做了
-
当然,我明白这一点。我的建议是尝试添加
set;看看它是否有效。谁知道呢,可能不支持。 -
@LibinJoseph 解释不工作是什么意思。显示预期和实际发生的情况。说它不起作用并不能告诉我们任何可以帮助你的东西。
-
如果没有 minimal reproducible example 澄清您的具体问题或其他详细信息以准确突出您需要什么,就很难重现问题,从而更好地理解所询问的内容。
标签: c# unit-testing dependency-injection mocking nsubstitute