使用NSubstitute和Ninject返回值 [英] Using NSubstitute and Ninject to return a value

查看:84
本文介绍了使用NSubstitute和Ninject返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的NinjectDependencyResolver: IDependencyResolver中,我有一个AddBindings()方法,现在我希望它为我返回一些硬编码的值,直到以后将其连接到数据库为止.

我要模拟并在该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!!!";

        // ? 
    }

解决方案

通常* NSubstitute不会自动替换返回诸如Configuration之类的类的成员,因此您需要手动对它进行存根:

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

(**是纯虚拟类))

希望这会有所帮助.

In my NinjectDependencyResolver: IDependencyResolver I have a AddBindings() method that for now I want it to return some hard coded values for me until I connect it to DB later.

The class and interface I want to mock and use in that AddBindings() method are like this:

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

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

Now I wanted to mock the interface and return a value in my Ninject method so I started writing something like this but got stuck, not sure how I should do it:

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

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

        // ? 
    }

解决方案

In general* NSubstitute will not automatically substitute for members that return classes like Configuration, so you'll need to manually stub it:

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

(* the exception being pure virtual classes)

Hope this helps.

这篇关于使用NSubstitute和Ninject返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆