Ошибка при тестировании xUnit при вставке пользователя в базу данныхC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка при тестировании xUnit при вставке пользователя в базу данных

Сообщение Anonymous »

Я новичок в написании модульного тестирования.
Я пытаюсь написать модульный тест для вставки пользователя в базу данных, но получаю сообщение об ошибке.
Ошибка: System.NotSupportedException: Введите to макет (SqlConnection) должен быть интерфейсом, делегатом или незапечатанным, нестатическим классом.
У меня есть класс UserRepository:
public class UserRepository : IUSerRepository
{
public async Task InsertUserAsync(User user, SqlConnection connection, SqlTransaction transaction)
{

if (!await UserExistAsync(user.Email!, connection, transaction))
{

using (SqlCommand cmd = new SqlCommand("INSERT INTO users (FLO, email) VALUES (@Flo, @Email);SELECT SCOPE_IDENTITY();", connection, transaction))
{

cmd.Parameters.AddWithValue("@Flo", user.Flo);
cmd.Parameters.AddWithValue("@Email", user.Email);

object? res = await cmd.ExecuteScalarAsync();
return Convert.ToInt32(res);
}
}
else
{

using (SqlCommand cmd = new SqlCommand("SELECT user_id FROM users WHERE email = @Email", connection, transaction))
{

cmd.Parameters.AddWithValue("@Email", user.Email);

object? res = await cmd.ExecuteScalarAsync();

return Convert.ToInt32(res);
}
}
}

public async Task UserExistAsync(string userEmail, SqlConnection connection, SqlTransaction transaction)
{
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(1) FROM users WHERE email = @Email", connection, transaction))
{
cmd.Parameters.AddWithValue("@Email", userEmail);
int count = Convert.ToInt32(await cmd.ExecuteScalarAsync());
return count > 0;
}
}
}

Мне нужно протестировать его методы
Я написал следующий класс для тестов, пока только 1 метод, но получил сообщение об ошибке
Тестовый класс:
public class UserRepositoryTests
{
private readonly Mock _mockConnection;
private readonly Mock _mockTransaction;
private readonly UserRepository _userRepository;

public UserRepositoryTests()
{
_mockConnection = new Mock();
_mockTransaction = new Mock();
_userRepository = new UserRepository();
}

[Fact]
public async Task UserRepository_InsertUserAsync_ShouldInsertNewUser_WhenUserDoesNotExist()
{
// Arrange
var mockCommand = new Mock();
mockCommand.Setup(cmd => cmd.ExecuteScalarAsync()).ReturnsAsync(1);

var mockUser = new User { Flo = "Иванов Иван Иванович", Email = "[email protected]" };

var mockConnection = new Mock();
var mockTransaction = new Mock();

var userRepository = new Mock();
userRepository.Setup(repo => repo.UserExistAsync(It.IsAny(), It.IsAny(), It.IsAny()))
.ReturnsAsync(false); // Пользователь не существует

// Act
int result = await userRepository.Object.InsertUserAsync(mockUser, mockConnection.Object, mockTransaction.Object);

// Assert
Assert.Equal(1, result);
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... e-database
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка при тестировании xUnit при вставке пользователя в базу данных
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при вставке данных в базу данных SQLite в Android
    Anonymous » » в форуме Android
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при вставке данных в базу данных с использованием AJAX, PHP
    Anonymous » » в форуме Php
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Laravel, jQuery: ДИНАМИЧЕСКАЯ ФОРМА КАЛЕНДАРЯ при вставке в базу данных ошибка
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Laravel, jQuery: ДИНАМИЧЕСКАЯ ФОРМА КАЛЕНДАРЯ при вставке в базу данных ошибка
    Anonymous » » в форуме Jquery
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»