使用NSubstitute和Ninject返回值

时间:2016-04-21 18:02:31

标签: c# ninject nsubstitute

在我的NinjectDependencyResolver: IDependencyResolver我有一个AddBindings()方法,现在我希望它为我返回一些硬编码值,直到我以后再将它连接到DB。

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

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

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

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

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

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

        // ? 
    }

2 个答案:

答案 0 :(得分:1)

关于您的界面的主要问题是您唯一的财产ConfigFileValues只有一个吸气剂。它应该也有setter,它将从实现接口的类初始化它。在代码方面我建议如下:

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

答案 1 :(得分:1)

一般情况下* NSubstitute不会自动替换返回类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

希望这有帮助。

相关问题