我正在尝试测试我的 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;
}
您已经使用 123 个字符串输入模拟了 findUser() 方法,但在 CheckIfUserExists() 中您使用了此方法的不同版本。
为了快速修复,您可以在模拟对象设置中使用相同的输入:
dbServiceMock.
Setup(m => m.FindUser($"select Username, Passwort from Users where Username = '{username}' and Passwort = '{password}'")).Returns(username);