- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近一直在对调用包含(持久)计算列的表的过程编写一些 tSQLt 数据库单元测试(通过 Red Gate SQL Test),请注意,如果我使用 FakeTable SP,我发现计算列是未填充(它们评估为 null)。计算列是测试的关键,因此我不能忽略测试中的列,而且我不想重复逻辑。
我正在使用 tSQLt.AssertEqualsTable SP 评估结果,因此我想确保两者中的列值相同。
在实践中,我通过不使用 FakeTable,而是在测试结束时使用(部分)回滚事务语句(根据 http://sqlity.net/en/585/how-to-rollback-in-procedures/ 的博客文章)或显式删除测试值来解决此问题。
我确信一定有更好的方法来编码此测试,并且欢迎任何建议。
最佳答案
测试时应将计算列中的逻辑与过程中的逻辑分开。该过程将获取该列中的信息并对其采取行动。该过程不应该关心该列是计算列还是实际列。这意味着,在您的测试中,您可以硬编码一个值以放入该列中。 FakeTable 通过将任何计算列转换为真实列来实现这一点。
在另一组测试中,您可以(并且应该)测试计算列的计算是否正确。为此,可以使用 FakeTable 的补充。这保留了表的计算属性。您需要将 EXECUTE tSQLt.FakeTable 的 @CompulatedColumn 参数设置为 1。( http://tsqlt.org/user-guide/isolating-dependencies/faketable/ )
顺便说一句,您不需要在测试中回滚任何内容。 tSQLt 已经在处理这个问题了。如果事务管理是该过程的要求,则您提到的文章中描述的逻辑仅在您自己的过程中需要。
关于sql-server - 使用 tSQLt 对计算列进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9415731/
使用 tSQLt 1.0.5873.27393,我正在尝试为存储过程编写 tSQLt 测试,该过程记录在 CATCH 中捕获的错误。在将错误重新抛出到调用 session 之前阻止到日志表。 我可以成
我最近正在调用一个程序,该程序在代码中包含一个rasierror。抬高筹码的人正处于试捕区。同样,BEGIN TRAN在加注程序之后位于同一 try catch 块中。如果事务中发生错误,则Catch
我是 tSQLt 的新手,在进行真正应该非常简单的测试时遇到了一些困难。 我在存储过程中执行的 SELECT 语句中添加了一列。 如何在 tSQLt 测试中测试该列是否包含在该存储过程的结果集中? 最
我是 tSQLt 的新手,在进行真正应该非常简单的测试时遇到了一些困难。 我在存储过程中执行的 SELECT 语句中添加了一列。 如何在 tSQLt 测试中测试该列是否包含在该存储过程的结果集中? 最
是否可以忽略tSQLt AssertEqualsTable中几乎肯定会有所不同的某些列?示例是来自两个结果表的主键,插入/更新日期戳等。 我一直在通过仅在新的临时表中选择相关列并进行比较来解决此问题,
首先,我应该指出,我对 Atlassian 的 Bamboo 和持续集成总体来说还是个新手。这是我使用其中任何一个的第一个项目。 我使用 tSQLt 框架创建了大量单元测试。我还将 Bamboo 配置
有什么办法可以找到tSQLt的版本号吗?安装在数据库上? 请注意,tSQLt 是 SQL Server 而非 T-SQL 的测试框架。 (请不要投票关闭不相关的副本。) 最佳答案 从源代码来看,似乎有
我正在使用 Red Gate SQL Developer 开发数据库工具。 SQL Test ,运行 tSQLt 测试的 SSMS 加载项缺少重命名测试类的方法。 我有一个名为 [BackendLay
这是场景: 存储过程sproc_a调用sproc_b。然后sproc_b调用sproc_c。典型的嵌套过程。 Sproc_a 执行了 SET XACT_ABORT ON;并使用命名事务。 Sproc_
我有一个曾经可以工作的安装,但现在似乎不行。想知道是否有其他人经历过这种情况。 曾经运行过的测试现在不运行了。似乎什么都没有运行。输出始终如下: +----------------------+ |测
在tSQLt中,我们可以使用AssertEqualsTable命令比较2个表。 但是,有什么方法可以断言表中的值是否已更改了一定数量? 例如: 表A:AccID |余额 表B:AccID |余额 tS
我有一个 tSQLt 测试,我预计它会失败,但它运行成功。当我在过程外运行代码时,它按预期失败了,但是当使用 Run 执行测试时,没有发生错误。 我已阅读问题 tSQLt Testing SQL Se
我最近一直在对调用包含(持久)计算列的表的过程编写一些 tSQLt 数据库单元测试(通过 Red Gate SQL Test),请注意,如果我使用 FakeTable SP,我发现计算列是未填充(它们
用于 SQL 单元测试的 Redgate 工具 SQLTest 现在能够从 SQLCop 添加测试。然而 Redgate 工具只附带了很少的预构建测试。 由于测试只是存储过程,我确信有人已经实现了更多
每当我使用 ExpectException 时,我都会收到以下错误:(还有一个 ROLLBACK 错误 --> 当前事务无法提交且无法回滚到保存点。回滚整个事务。{Private_RunTest,14
我对 tSQLt 数据库单元测试框架还很陌生。我有一个使用 3 个表的存储过程。每个表需要 15 行数据。我还需要另一个假表来验证结果。但是使用 INSERT 准备假表容易出错且难以维护。 为 tSQ
我刚开始使用tsqlt在redgate的sql测试里面。我必须处理遗留数据库中相当大的表(大量列)。将一些假数据插入此类表的最佳做法是什么(“脚本作为”插入语句非常大) - 因此它们会使我的单元测试的
我正在使用 tSQLt 对 t-sql 代码进行单元测试。 很多时候,测试的安排部分非常广泛,我试图将其中的大部分内容推送到设置过程中,以便在类内的测试中重用。 如果设置和测试程序可以“知道”相同的信
exec tSQLt.SetFakeViewOn 'dbo.viewWithIssues'; GO CREATE PROCEDURE TestChanges.[Test Data] AS BEG
当尝试在存储过程中验证用户提供的 GUID 时,使用了一种简单的方法;将用户输入作为 CHAR(36),然后在 TRY CATCH 中将其显式转换为 UNIQUEIDENTIFIER。然后,CATCH
我是一名优秀的程序员,十分优秀!