使用 NSubstitute 和 Ninject 到 return 一个值

Using NSubstitute and Ninject to return a value

在我的 NinjectDependencyResolver: IDependencyResolver 中,我有一个 AddBindings() 方法,现在我希望它为我 return 一些硬编码值,直到我稍后将它连接到数据库。

我想在 AddBindings() 方法中模拟和使用的 class 和接口是这样的:

public class Configuration
{
    public string WebSiteNotActiveMessage { get; set; }
    public bool IsWebSiteActive { get; set; }
}

public interface IConfigurationManager
{
    Models.Configuration.Configuration ConfigFileValues { get; }
}

现在我想在我的 Ninject 方法中模拟接口和 return 一个值,所以我开始写这样的东西但是卡住了,不知道我应该怎么做:

  private void AddBindings()
    {
        var config = Substitute.For<IConfigurationManager>();

        config.ConfigFileValues.IsWebSiteActive = true;
        config.ConfigFileValues.WebSiteNotActiveMessage = "Website is not active!!!";

        // ? 
    }

关于您的界面的主要问题是您唯一的 属性、ConfigFileValues,只有一个 getter。它还应该有 setter,这将从实现接口的 class 初始化它。就代码而言,我建议是这样的:

public interface IConfigurationManager
{
    Models.Configuration.Configuration ConfigFileValues { get; set; }
}

一般* NSubstitute 不会自动替换 return 类 的成员,例如 Configuration,因此您需要手动将其存根:

var config = Substitute.For<IConfigurationManager>();
config.ConfigFileValues.Returns(new Configuration());
config.ConfigFileValues.IsWebSiteActive = true;
config.ConfigFileValues.WebSiteNotActiveMessage = "Website is not active!!!";

(* pure virtual classes 除外)

希望对您有所帮助。