【问题标题】:Creating mock stored procedures创建模拟存储过程
【发布时间】:2011-02-03 15:28:38
【问题描述】:

是否有一种简单的方法可以基于 sql 存储过程自动化/生成模拟或存根?

我试图涵盖的情况是,当对开发中的 proc 进行更改时,即有人添加了必需的输入参数,然后我希望尚未使用必需参数更新的测试失败。

【问题讨论】:

  • 我个人会针对实际存储的过程进行测试(在开发/测试环境中)。这将是一个集成测试(命中数据库),而不是一个单元测试,并且可能每天运行。
  • 最初我想我正在寻找一种方法来避免这样做作为集成测试,方法是使用从数据库生成的模拟或存根......但是你仍然每次都与数据库交互您需要生成存根/模拟。

标签: .net sql-server unit-testing stored-procedures mocking


【解决方案1】:

虽然自动化程度较低,但另一种方法是创建一个脚本,其中包含一组您感兴趣的存储过程的执行语句。通过运行这些语句,您可以捕获在参数更改时失败的语句。您还可以编写 MS SQL 中的 exec 存储过程位

例子

exec [DATABASE].dbo.[StoredProc] parameter1, parameter 2

这不会提供任何验证结果的机制。如需更全面的方法,您可以查看 Simple-Talk 时事通讯中的此示例,该示例使用 c# 和 NUnit 构建测试工具。

"Close those Loopholes - Testing Stored Procedures"

【讨论】:

    【解决方案2】:

    一种解决方案是编写测试来验证您的存储过程接受的参数数量。这更像是一个集成类型的测试,而不是一个纯单元测试,但它会解决你的问题。

    【讨论】:

      【解决方案3】:

      您可以通过检查INFORMATION_SCHEMA.PARAMETERS 来生成调用存储过程(可能带有虚拟变量)的测试

      如果你在这样一个测试存储过程上运行sp_recompile,它应该会因为参数数量不正确而编译失败。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-10
        • 2011-09-11
        • 2016-11-11
        • 2021-12-08
        相关资源
        最近更新 更多