单元测试调用使用Simple.Data返回值的存储过程

时间:2013-12-09 15:32:50

标签: sql unit-testing stored-procedures simple.data

我有以下存储过程:

[dbo].[MyStoredProcedure] 
     @field1 int, @field2 int, @field3 nvarchar(5), @returnValue int output

我使用Simple.Data调用它并获取返回值,如下所示:

 var result = db.MyStoredProcedure(intParam1, intParam2, stringParam3, new int());
 int returnValue = result.OutputValues["returnValue"];

我正在尝试测试上面的代码,以确保它从returnValue字典中获取OutputValues并正确处理结果。为此,我需要伪造存储过程MyStoredProcedure

我可以在这里看到一个很好的例子,说明如何在Simple.Data文档中测试向数据库添加行的存储过程: Simple.Data documentation,但我看不到如何从此函数返回值。

如何模拟带有大量参数的存储过程(在我的情况下为intintnvarcharint)并添加我的假{{ 1}}密钥(具有相应的returnValue值)到int字典?

1 个答案:

答案 0 :(得分:0)

我通常会尽量避免使用具有永久副作用的“单元测试”代码,但可以通过在单元测试中设置事务范围来执行此操作:

    TransactionScope _trans;

    [TestInitialize()]
    public void Init()
    {
        _trans = new TransactionScope();  // start a new transaction
        base.InitializeTest();
    }

    [TestCleanup()]
    public void Cleanup()
    {
        base.CleanupTest();
        _trans.Dispose();  // rollback the transaction
    }

    [TestMethod()]
    public void TransactedTest()
    {

        // set up test parameters

        var result = db.MyStoredProcedure(intParam1, intParam2, stringParam3, new int());
        int returnValue = result.OutputValues["returnValue"];

        // validate return value

    }
相关问题