[英]How can I mock a singleton class with NSubstitute?
我有一个Singleton课,像这样:
public class XConnector : IXConnector
{
private static readonly Lazy<XConnector> instance =
new Lazy<XConnector>(() => new XConnector());
public static XConnector Instance => instance.Value;
private XConnector()
{
}
public async Task<XConnector> GetData(XConnector con)
{
}
}
如何使用NSubstitute模拟此类?
另一方面:我想要这样的东西
var target = Substitute.For<IXConnector>();
当我调试此代码时,这是一个快速观察
我不记得Ambient Context模式的实现,我没有书。 但是,它看起来像这样:
public class XConnector : IXConnector
{
private static IXConnector _instance = new XConnector();
private XConnector()
{
}
public static IXConnector Current
{
get
{
return _instance;
}
set
{
// Think about thread-safety
// Check for null?
_instance = value;
}
}
public async Task<XConnector> GetData(XConnector con)
{
}
}
然后您的测试可以做到这一点:
XConnector.Current = Substitute.For<IXConnector>();
您的功能代码可以使用默认实例或伪实例来执行此操作:
XConnector.Current.GetData(...);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.