我已经开始使用 tsqlt,我的问题是可以有一个单独的数据库,只包含测试的东西吗?(表/sp's/程序集等)。
此测试数据库将与实际/目标数据库位于同一实例上。
如果我尝试伪造表格,则会收到以下错误:
FakeTable could not resolve the object name, 'target_db.dbo.Sometable'
有没有人有这方面的经验?
谢谢。
正如您所发现的,这目前是不可能的,因为模拟过程不接受三个部分名称。这是 SQL 测试(RedGate 的产品,充当 tSQLt 的前端)的用户反馈论坛中涵盖的内容:http: //sqltest.uservoice.com/forums/140716-sql-test-forum/suggestions/ 2421628-减少足迹
tSQLt 框架的作者之一丹尼斯·劳埃德(Dennis Lloyd)在该线程的末尾写道,他们将继续考虑支持单独的“tSQLt”数据库。
还有一个在http://sqltest.uservoice.com/forums/140716-sql-test-forum/suggestions/2423449-being-able-to-mock-fake-remote-objects上模拟远程对象的相关问题
我希望这会有所帮助,
戴夫
您现在可以执行此操作,只要 tSQLt 框架位于另一个数据库中:
EXEC tSQLt.FakeTable '[dbo].[Position]';
EXEC OtherDB.tSQLt.FakeTable '[dbo].[PositionArchive]';
这意味着您至少可以将测试放在您想要的地方,尽管您必须将框架安装在被测的实际数据库中。这并不完美,但更好。