0

我有以下存储过程:

[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"];

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

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

如何模拟带有多个参数(在我的情况下int为 , int, nvarchar, int)的存储过程并将我的假returnValue键(具有相应int值)添加到OutputValues字典中?

4

1 回答 1

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

    }
于 2013-12-09T17:05:18.737 回答