Тест Moq с общим интерфейсом
public interface IWebAPIAsync<t> { Task<List<t>> Load(); Task Create(T obj); Task<t> Read(int key); Task Update(int key, T obj); Task Delete(int key); } public class WebAPITest<t> { #region Instance fields private IWebAPIAsync<t> _webAPI; #endregion #region Constructor public WebAPITest(IWebAPIAsync<t> webApi) { _webAPI = webApi; } public WebAPITest() { } #endregion #region Test methods for all five REST API methods public async Task RunAPITestLoad() { await LoadAndPrint(); } public async Task RunAPITestCreate(T obj) { await RunAPITest(() => _webAPI.Create(obj)); } public async Task RunAPITestRead(int key) { Task<t> readTask = _webAPI.Read(key); await readTask; PrintSingleRecord(readTask.Result); } public async Task RunAPITestUpdate(int key, T obj) { await RunAPITest(() => _webAPI.Update(key, obj)); } public async Task RunAPITestDelete(int key) { await RunAPITest(() => _webAPI.Delete(key)); } #endregion #region Private helper methods for test execution private async Task RunAPITest(Func<task> APIMethod) { await APIMethod(); } private async Task LoadAndPrint() { Task<List<t>> loadTask = _webAPI.Load(); await loadTask; PrintMultipleRecords(loadTask.Result); } private void PrintMultipleRecords(List<t> records) { foreach (var record in records) { Console.WriteLine(record); } } private void PrintSingleRecord(T record) { { Console.WriteLine(record); } } } }
Что я уже пробовал:
ВАР макет = новый макет&ЛТ;IWebAPIAsync&ЛТ;задача 1&ГТ;&ГТ;();
издеваться.Setup(x => x.Create(It.IsAny<task1>()));
макет.Проверить();
Patrice T
В чем же вопрос ?
Member 13537727
спасибо за комментарий, вопрос в том,как тестировать методы create, load,read?
F-ES Sitecore
модульное тестирование обычно используется для проверки бизнес-логики и процессов, читая между строк код в ваших службах доступа\обновления данных в базе данных, и вы не тестируете эти вещи с помощью модульного тестирования. Чтобы проверить их работу, вам понадобится доступ к базе данных, вам нужно будет сделать свое создание, а затем иметь код для чтения базы данных, чтобы проверить, что создание работает, а затем, возможно, удалить данные тоже, но, возможно, создание добавило данные в 20 таблиц и запустило какой-то другой процесс с помощью триггеров?