2016-04-21 6 views
1

В моем NinjectDependencyResolver: IDependencyResolver У меня есть метод AddBindings(), который теперь я хочу, чтобы он возвращал мне некоторые жестко закодированные значения, пока я не подключу его к БД позже.Использование NSubstitute и Ninject для возврата значения

Класс и интерфейс Я хочу, чтобы дразнить и использовать в том, что 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!!!"; 

     // ? 
    } 
+0

Я так думаю? config.ConfigFileValues.IsWebSiteActive.Returns (истина); config.ConfigFileValues.WebSiteNotActiveMessage.Returns («Сайт неактивен»); – Bohn

ответ

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)

Надеюсь, что это поможет.

1

Основная проблема относительно вашего интерфейса является то, что ваша единственная собственность, ConfigFileValues, имеет только геттер. Он должен иметь также setter, который инициализирует его из класса, который будет реализовывать интерфейс. С точки зрения кода, который я предлагаю это:

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

В этом случае сеттер не требуется, и может быть вредным, если вы не хотите, чтобы это значение было изменено из других классов. –

 Смежные вопросы

  • Нет связанных вопросов^_^