database - 避免在没有模拟的情况下进行单元测试的数据库依赖

标签 database unit-testing dependencies

我有很多对象的方法需要访问数据库。我们希望进入单元测试,但如果可能的话,我们希望避免使用模拟对象。我想知道是否有一种方法可以重构下面显示的 Validate 方法,以便它不需要数据库访问。在实际应用中,通常会有更多的事情发生,但我认为这个简化的例子应该足够了。

如果需要,我们将学习使用模拟对象,但这看起来开销很大,所以我正在寻找替代方案。

    public class Person
    {
        public string Name;

        public string Validate()
        {
            if (PersonDA.NameExists(Name))
            {
                return "Name Already Used";
            }

        }
    }

最佳答案

就我个人而言,我只是走模拟对象路线。它更加灵活,听起来您想走将测试代码放入实际对象的路线?

无论如何,使用 boolean isValid(Person) 方法将验证代码提取到 PersonValidator 对象中。然后在测试代码中使用一个模拟验证器,它只根据测试用例返回 true 或 false。

关于database - 避免在没有模拟的情况下进行单元测试的数据库依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/962860/

相关文章:

unit-testing - NUnit、MbUnit、MSTest、xUnit.net

java - 将 Maven Artifact 映射到 Debian 包

java - Gradle 不提供子项目中的依赖项

java - SQLiteBlobTooBigException - 华为设备、Android 9 和 10

unit-testing - Golang单元测试: error conditions

unit-testing - 如何在 Symfony 包中设置特定于环境的参数?

perl - 如何重建/重新安装最新 CPAN 模块的依赖项?

php - 从mysql字符串返回特定数据

database - 使用多个数据库和每个数据库一个模式更好,还是一个数据库有多个模式更好?

mysql - 复制 MYSQL 数据库文件夹