Ну, вот как я это делаю:
Мой уровень данных имеет интерфейс, такой как:
public class MyDataLayer : iMyDataLayer
{
public string GetMyData(parameters)
{
return myQueryValue;
}
}
public interface iMyDataLayer
{
public string GetMyData(parameters);
}
Теперь в моем конструкторе для основной базы кода (бизнес-логика) у меня будет параметр для передачи в интерфейсе для уровня данных:
private iMyDataLayer DataLayer;
public class MyBusinessLogic(iMyDataLayer dataLayer)
{
DataLayer = dayaLayer
}
public string GetMyData(parameters)
{
return DataLayer.GetMyData(parameters)
}
Теперь я могу создать «поддельную» службу данных в моем проекте TDD:
public class FakeDataLayer : iMyDataLayer
{
public string GetMyData(parameters)
{
return "Some Default Value or Object";
}
}
Так что теперь, когда я запускаю свой тест, я теперь могу передать свой ложный объект слоя данных в свою бизнес-логику, отсюда он вызовет ложную логику и вернет результат по умолчанию.
Теперь, если вы не будете работать с реальными данными здесь. Однако если вы настраиваете поддельные объекты с действительными / недействительными данными, вы можете проверить свою бизнес-логику таким образом, не подключаясь к базе данных.
Надеюсь, это поможет. Дайте мне знать, если вам нужно что-то прояснить.