我有以下存储过程:
[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,但我看不到如何从此函数返回值。
如何模拟带有大量参数的存储过程(在我的情况下为int
,int
,nvarchar
,int
)并添加我的假{{ 1}}密钥(具有相应的returnValue
值)到int
字典?
答案 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
}