没有调用spyProcedure之后的程序......如何解决这个问题

时间:2014-04-03 06:47:04

标签: tsqlt

我正在尝试使用spyProcedure,但它没有按预期工作。 以下是场景,请帮助我在哪里做什么?

**CREATE PROC [dbo].[proc3](@id int , @marks int out)
as
begin
   select @marks = marks from student where id=@id;
end**


CREATE PROC [dbo].[proc4](@id int , @marks int )
as
begin
   print 'inside proc4 id ' + cast(@id as varchar) + ' marks ' +  cast(@marks as varchar);
   update student set marks = @marks where id=@id;
end


**CREATE PROC [dbo].[proc6](@id1 int , @id2 int) 
as
begin
      declare @marks int;
      EXEC tSQLt.SpyProcedure 'proc3' , 'SET @marks = 80';

    set @marks  = @marks + 20;
    print ' marks = ' + cast(@marks as varchar);
    EXEC proc4 @id  = @id2 , @marks = @marks;
end** 

EXEC proc6 @id1 = 1 , @id2 = 2;
GO

当我打电话给上面的时候,它无法执行/调用" EXEC proc4 @id = @ id2,@ marks = @marks;"但是当我评论" EXEC tSQLt.SpyProcedure' proc3' ,' SET @marks = 80&#39 ;; "然后就可以执行了。

你能帮我解决我在哪里做错了以及如何正确执行它。

谢谢。

1 个答案:

答案 0 :(得分:3)

我认为你没有完全掌握如何使用上面代码示例中的tSQLt。

要开始运行基本的tSQLt测试,您需要做一些事情。

  1. 所有测试都必须在测试类中。

    EXEC tSQLt.NewTestClass'MyTestClass' GO

  2. 所有测试必须以关键字'test'开头

    CREATE PROCEDURE [MyTestClass]。[test_MyFirstTest] 如 开始   EXEC tSQLt.AssertEquals 1,1,'1实际上等于1' END

  3. 要运行测试,您需要使用tSQLt测试运行器

    进行测试

    EXEC tSQLt.Run'[MyTestClass]。[test_MyFirstTest]'

  4. 使用SpyProcdure是一项高级功能,只有在您清楚了解基础知识后才能尝试使用。如果您有使用TDD和模拟框架的经验,那么让SpyProcedure工作不应该是一个巨大的飞跃。 如果您觉得自己对基础知识感到满意,首先尝试使用SpyProcedure来记录使用SpyProcedureLog调用过程中的间谍参数(请参阅tSQLt.org上的文档),然后尝试返回结果集。您在上面的示例中尝试的内容(传递变量中的值)与使用tSQLt一样困难。