4

我最近开始使用 TST (tst.codeplex.com) 测试存储过程,发现它非常有用 - 然而,一个缺点是我们无法隔离依赖项和“模拟”其他 SP/函数调用(就像我们对 C# 对象依赖项所做的那样,例如)。我不介意花一些时间将这个功能添加到 TST 或编写一个新框架,但我真的不知道如何开始。

有任何想法吗?任何帮助表示赞赏。

PS:我知道 SP 的设计从来没有考虑到测试,但这对于已经存在 100 多个 SP 的遗留项目来说可能是一个巨大的福音。

4

2 回答 2

2

确实有助于先前的答案,虽然重命名方法远非理想,但它确实有效。我在一篇针对 SSDT 数据库项目的博客文章中对其进行了演示,但原理是相同的:

https://tangodude.wordpress.com/2014/02/08/ssdt-database-projects-mocking-database-objects-for-isolated-unit-testing-kind-of/

tSQLt 对 mocking 有全面更好的支持:

http://tsqlt.org/user-guide/isolating-dependencies/

于 2014-02-08T17:21:11.883 回答
0

我自己一直在为类似的事情苦苦挣扎,我想知道以下是否可能是一种模拟 SP 的方法。

在运行需要模拟 SP 的测试之前,测试框架应该:

  • 重命名原始 SP(例如:HiddenSp)
  • 创建一个具有相同参数的新 Sp
  • 在新的 SP 添加代码以检查需要模拟响应的参数组合
  • 如有必要,提供模拟响应
  • 或者
  • 将请求传递给原始 SP
  • 执行测试
  • 删除模拟
  • 还原原始 SP 的名称

我们没有使用 TST,但我想我会在我们的(手动)SQL 测试框架中添加类似的东西。几周后不会去,所以我想知道这是否适合你。

于 2012-05-23T18:48:54.953 回答