tSQLt 世界的新手(很棒的工具集),在我正在为其设置测试的存储过程中遇到了一个小问题。
如果由于某种原因我有一个连接到多个数据库甚至多个 SQL 服务器(链接服务器)的存储过程。
在这种情况下是否可以使用 tSQLt 进行单元测试?
我已经评论过,但我想补充一些。正如我已经说过的,您可以做任何适合单笔交易的事情。
但对于您的情况,我建议为每个跨数据库/实例对象创建同义词,然后在各处使用同义词。
我创建了以下函数来模拟视图/表同义词。它有一些限制,但至少可以处理简单的用例。
CREATE PROCEDURE [tSQLt].[FakeSynonymTable] @SynonymTable VARCHAR(MAX)
AS
BEGIN
DECLARE @NewName VARCHAR(MAX)= @SynonymTable+REPLACE(CAST(NEWID() AS VARCHAR(100)), '-', '');
DECLARE @RenameCmd VARCHAR(MAX)= 'EXEC sp_rename '''+@SynonymTable+''', '''+@NewName+''';';
EXEC tSQLt.SuppressOutput
@RenameCmd;
DECLARE @sql VARCHAR(MAX)= 'SELECT * INTO '+@SynonymTable+' FROM '+@NewName+' WHERE 1=2;';
EXEC (@sql);
EXEC tSQLt.FakeTable
@TableName = @SynonymTable;
END;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)