Мне нужно реализовать подделки для модульного тестирования одного из моих методов. Проблема заключается в том, что метод, который мне нужен для проверки, вызывает метод класса и извлекает некоторые системные параметры. Сценарий выглядит следующим образом:
Class A(){
public void method xx(){
//This needs to be tested.
//This method makes a call to retrieve some informations. The call is like
below:
String culture=Api.GetEnvironmentData().GetCulture();
//This is the problem area.
boolean implmentApi=Api.GetEnvironmentData().DoImplmentApi();
//This is the problem area.
}
}
Этот метод GetEnvironmentData выглядит примерно так:
public static EnvironmentData GetEnvironmentData ()
{
return GetDiContainer().Resolve<EnvironmentData >();
}
Класс EnvironmentData выглядит примерно так:
public class EnvironmentData(){
public EnvironmentData(IEnvironmentDataProvider EnvironmentDataProvider){
//
}
}
Я могу подделать IEnvironmentDataProvider с помощью moq, но не могу понять, как подделать класс EnvironmentData. Мне нужно подделать класс EnvironmentData, потому что он манипулирует результатами IEnvironmentDataProvider на основе вызовов различных методов. Например, и GetCulture, и DoImplmentApi вызывают метод getData интерфейса IEnvironmentDataProvider, а затем преобразуют их соответствующим образом. Теперь, когда я подделываю IEnvironmentDataProvider и возвращаю какое-то значение, я не могу контролировать, что возвращать при вызове GetCulture и DoImplmentApi.
Может кто-нибудь подсказать, как реализовать подделки для описанного выше сценария.