问题标签 [tsqlt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1129 浏览

sql-server - 使用 tSQLt,如何在使用 GETUTCDATE() 时隔离对系统时钟的依赖?

我有一个多次使用 GETUTCDATE() 函数的存储过程。这是一个非常具体的业务线,所以在这里展示它可能没有多大意义。话虽如此,知道 sproc 只会在当年被调用可能会有所帮助。这是一个人为的例子,它没有显示我正在做的事情的复杂性,但应该有助于说明我在说什么:

我的测试如下所示:

我看到几个选项:

  1. 将日期/时间作为参数传入(如果为 NULL,则将值设置为 GETUTCDATE())
  2. 用我自己的函数替换对 GETUTCDATE() 的调用,以返回我可以使用 tSQLt 伪造的日期/时间
  3. ?

这两个似乎都是测试所需的选项,看起来有点臭;关于如何从主应用程序调用这个存储过程,永远不需要参数化它。

由于它与 SQL 中具有自己依赖关系的内置函数的依赖关系有关,有没有办法在 tSQLt 测试中伪造这些调用?有没有更好的方法来伪造对 GETUTCDATE() 的调用以返回我在使用 tSQLt 的测试中指定的日期,或者这些是我唯一的选择吗?

0 投票
1 回答
565 浏览

sql-server - tsqlt 和动态 sql

我正在尝试测试一个使用动态 sql 的存储过程,如下所示:

无论我做什么,我都没有通过测试。我在用

伪造底层数据库的数据。tsqlt 不能与动态 sql 一起工作,这是一个众所周知的事实吗?

PS:

更多代码:

0 投票
2 回答
952 浏览

sql-server - tSQLt Private_RunTest 中还有一个 ROLLBACK ERROR

每当我使用 ExpectException 时,我都会收到以下错误:(还有一个 ROLLBACK ERROR --> 当前事务无法提交,也无法回滚到保存点。回滚整个事务。{Private_RunTest,140})

在 MSSQL 由于 RAISERROR 已经执行 ROLLBACK 之后,tSQLt 似乎正在尝试 ROLLBACK。我用下面的 IF 语句将下面的 SELECT 和 SET 语句包装在 Private_RunTest 中,它似乎解决了这个问题。

这真的是一个错误和/或适当的修复吗?

0 投票
0 回答
352 浏览

tsqlt - 带有 XML Schema 集合的 Tsqlt

我目前正在研究一个表模式,该表模式具有一个引用 XML 模式集合的列。在我的单元测试中伪造表格并运行测试后,我收到一条错误消息:“元数据中不存在指定的集合”。

我曾尝试在伪造之前创建 xml 模式集合。但这仍然会导致错误。

任何人都有想法。

提前致谢!

0 投票
3 回答
1295 浏览

sql - 如何将索引应用于 tSQLt 中的伪造表

使用适用于 MS SQL Server (2012) 的优秀tSQLt测试框架 (v1.0.5137.39257),我正在尝试构建一个测试来检查 UNIQUE INDEX 是否有效,并在插入重复值时生成异常。

经过大量搜索后,我找不到将索引应用于已伪造的表(内置 tSQLt proc 或额外代码)的方法。需要类似的东西tSQLt.ApplyIndex。有没有人设法做到这一点?

另一种可能性是分叉 tSQLt 代码并基于http://gallery.technet.microsoft.com/scriptcenter/SQL-Server-Generate-Index-fa790441上的代码添加一个 proc以重新创建伪造的索引桌子。然而,这将是相当多的工作......

测试条件(假设数据库中已经安装了tSQLt ):

创建测试类,测试并运行它(当然它会失败,因为过程调用 ApplyIndex 不存在):

当然,如果索引不工作,上述测试就会失败。

清理:

谢谢

0 投票
2 回答
770 浏览

sql-server - tsqlt 测试生成文件作为输出的存储过程的方法

我有一个使用 BCP 创建文件的存储过程。我需要使用预定义的预期结果集验证文件中的数据。有没有办法可以使用 TSQLT 进行测试?

0 投票
1 回答
898 浏览

tsqlt - 如何忽略 tSQLt AssertEqualsTable 中的列?

是否可以忽略在 tSQLt AssertEqualsTable 中几乎肯定会不同的某些列?例如来自两个结果表的主键、插入/更新日期戳等等。

我一直在通过仅将相关列选择到新的临时表中并进行比较来解决此问题,但这意味着额外的工作和额外的出错位置。不是很多,当然,但它加起来了几十或几百个测试。

一种内置或简单的方式来表示“比较这两个表但忽略列 X 和 Y”将非常有用。有没有比我正在使用的更好的解决方案?

0 投票
2 回答
1752 浏览

tsqlt - tSQLt - 测试列是否由存储过程输出

我对 tSQLt 非常陌生,并且在真正应该非常简单的测试方面遇到了一些困难。

我在存储过程中执行的 SELECT 语句中添加了一列。

如何在 tSQLt 测试中测试该列是否包含在该存储过程的结果集中?

0 投票
0 回答
313 浏览

tsqlt - SpyProcedure 不支持用户定义的表类型

解决了它(希望!)

我有一个用户定义的表数据类型用作存储过程中的参数。

我对其进行了间谍活动,它引发了如下错误: A column cannot be of a user-defined table type.[16,1]{,1}

不支持吗?如果没有,我对任何人是如何做到的很感兴趣——我的意思是监视一个类似于我的情况的存储过程。

我的数据库服务器是 SQL2008 R2。

下面是复制它的示例代码:

下面的黑客代码。 我已经标记了我的更改。目标是从作为 XML 的表值参数中查询值。注意:代码尚未经过彻底测试。

0 投票
0 回答
3155 浏览

.net - tSQLt - 执行用户定义的例程或聚合“私有”期间发生 .NET Framework 错误

我正在尝试使用 tSQLt 调用测试过程。测试成功,但我收到以下错误消息:

在执行用户定义的例程或聚合“私有”期间发生 .NET Framework 错误

数据库已设置为 TRUSTWORTHY ON 并启用 CLR (sp_configure 'clr enabled', 1;)

有什么想法可以解决这个问题吗?提前致谢