Как смоделировать соединение с базой данных в ядре .net - PullRequest
0 голосов
/ 19 сентября 2019

Мне нужно смоделировать соединение с базой данных, а затем вызвать метод для возврата значения.

Я создал данные moq, но я не уверен, как смоделировать соединение с базой данных.

private void SetupUserRepository()
{
    var firstname = "FirstName1";
    var _lastName = "LastName1";
    var _userName = "FirstName1.LastName1@warburgpincus.com";
    var _email = "FirstName1.LastName1@warburgpincus.com";
    var User = new User { FirstName = firstname, LastName = _lastName, Username = _userName,Email = _email};
   var mockUserRepository = new Mock<IUserRepository>();
       // mockUserRepository.Setup(m => m.GetOne(It.IsAny<string>(), It.IsAny<CancellationToken>())).ReturnsAsync((string section, CancellationToken token) => moqData.contentControls.FirstOrDefault(a => a.InternalControlName == section));
   // mockUserRepository.Setup(m => m.GetOne(It.IsAny<string>(), It.IsAny<CancellationToken>()));
    //var x = moqData.userDetails.First(a => a.Username == _userName);
    mockUserRepository.Setup(m => m.GetOne(It.IsAny<string>(), It.IsAny<CancellationToken>())).ReturnsAsync(moqData.userDetails.First(a => a.Username == _userName));
    UserRepository test = new UserRepository(mockUserRepository.Object,null,null);
    var result = test.GetOne(_userName, It.IsAny<CancellationToken>());
    ///var repo = new UserRepository(mockUserRepository.Object,null,null);
    //var actual = await repo.GetOne(_userName, It.IsAny<CancellationToken>());
    Assert.Same(User, result);
}

Ив классе контроллера ниже указаны параметры, которые необходимы

public UserRepository(ValuationsReportingContext context, IHttpContextAccessor httpContextAccessor, ILogger<UserRepository> logger) : base(context, httpContextAccessor)
{
    _logger = logger ?? throw new ArgumentNullException(nameof(logger));
    claimsPrincipal = httpContextAccessor?.HttpContext?.User;
}

Необходимо получить данные из списка вместо базы данных

UserRepository test = new UserRepository(mockUserRepository.Object,null,null);

эта строка выдает ошибку, как и ожидалосьDBContext.

1 Ответ

0 голосов
/ 19 сентября 2019

Вы не должны использовать реальную реализацию UserRepository.Вместо этого используйте ваш IUserRepository макет:

var mockUserRepository = new Mock<IUserRepository>();
...
var result = mockUserRepository.Object.GetOne(_userName, It.IsAny<CancellationToken>());
...