Почему юнит-тесты до сих пор не высмеиваются, как при отладке перехода на уровни доступа к данным - PullRequest
0 голосов
/ 29 апреля 2019
var ClosedLoopTrxSyncDAL = new Mock<ITrxSyncDAL<DeviceTrxSyncTracking>>();
 Mock<IOptions<AppSettings>> appSettings = new Mock<IOptions<AppSettings>>();
 var dt = new DataTable();

 var isValid = true;
DeviceTrxSyncTracking transactionItems = new DeviceTrxSyncTracking()
List<ClosedLoopTrxItem> ClosedLoopTrxList = new List<ClosedLoopTrxItem>();   
ClosedLoopTrxSyncDAL.Setup(post => post.InsertTransaction(dt, transactionItems)).Returns(isValid);
var controller = new ClosedLoopSyncController(appSettings.Object);
SyncDataAnchor result = controller.ClosedLoopSyncService(ClosedLoopTrxList);

здесь отладчик перемещается на уровень доступа к данным даже после того, как высмеял его и возвратил мой собственный объект. ожидается: когда я отлаживаю тест, из бизнес-уровня он не должен переходить на уровень доступа к данным, а должен возвращать готовый объект

1 Ответ

1 голос
/ 29 апреля 2019

Вы должны указать mocked объекту, что возвращать, когда что-то пытается получить доступ к настройкам.Например, если ваш класс AppSettings выглядит следующим образом:

public class AppSettings
{
    public string MyValue { get; set; }
}

В приведенном выше тестовом коде вы можете создать объект AppSettings и заполнить нужные значения.EG:

 Mock<IOptions<AppSettings>> appSettings = new Mock<IOptions<AppSettings>>();

 var testAppSettings = new AppSettings { MyValue = "This is a test" };
 appSettings.SetupGet(a => a.Value).Returns(testAppSettings);

Теперь, когда ваш класс контроллера читает свойство MyValue, он получит строку "This is a test".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...