x最小起订量的单元测试未给出正确的结果

问题描述 投票:0回答:1

我正在尝试测试我的 storemanager 项目,该项目是使用依赖注入构建的。并尝试用最小起订量进行测试。但不知何故它提供了错误的结果。我认为这段代码没有得到它应该得到的正确信息。

dbServiceMock.Setup(m => m.FindUser(username)).Returns<string>(x => GetExampleUser());

测试方法

        string username = "123";

        string password = "96CAE35CE8A9B0244178BF28E4966C2CE1B8385723A96A6B838858CDD6CA0A1E";

        Mock<IDatabaseService> dbServiceMock = new Mock<IDatabaseService>();

        //Mock-Methoden einrichten
        dbServiceMock.Setup(m => m.FindUser(username)).Returns<string>(x => GetExampleUser());
           

    

        IUserService userService = new UserService(dbServiceMock.Object);

        string test = dbServiceMock.Object.FindUser("123");
        bool exists = userService.CheckIfUserExists(username, password);

        // Act
        
        bool testresult = userService.CheckIfUserExists(username, password);

        // Assert

        Assert.True(testresult);

查找用户类

 public string FindUser(string sqlComand)
 {
     string userResult = "";
     if (_connection != null && _connection.State == System.Data.ConnectionState.Open)
 {
     var getUserInformationComand = new SqliteCommand(sqlComand);
     getUserInformationComand.Connection = _connection;
     var findUser = getUserInformationComand.ExecuteScalar();
     userResult = Convert.ToString(findUser);
 }
 else
 {
     Console.WriteLine();
 }

     return userResult;
 }

检查IFUserExists类

public bool CheckIfUserExists(string username, string passwort)
{
   var result = false;

   var comand = $"select Username, Passwort from Users where Username = '{username}' and 
   Passwort = '{passwort}'";
   if (_database.FindUser(comand) == username)
{
    result = true;
}
else
{
    result = false;
}

return result;
}
c# testing moq xunit
1个回答
0
投票

您已经使用 123 个字符串输入模拟了 findUser() 方法,但在 CheckIfUserExists() 中您使用了此方法的不同版本。

为了快速修复,您可以在模拟对象设置中使用相同的输入:

dbServiceMock.
Setup(m => m.FindUser($"select Username, Passwort from Users where Username = '{username}' and Passwort = '{password}'")).Returns(username);
© www.soinside.com 2019 - 2024. All rights reserved.