【发布时间】:2010-01-19 18:11:58
【问题描述】:
我在业务层也有类似的方法。我是单元测试的新手,有时会感到困惑。对于一个想法,你能建议什么是测试这种方法的更好方法 行为?我正在使用 C# NUnit 和 Moq
public int? AddNewCatRetID(string categoryName)
{
int? categoryID = 0;
Adapter.AddNewBlogCategoryReturnID(categoryName, ref categoryID);
if (categoryID.HasValue)
return categoryID;
return 0;
}
在哪里
Adapter = Visual Studio 2008,数据集设计器生成 TableAdater
AddDeveloperCategoryReturnID() = 使用 DB 中存储过程的函数的名称
它会添加一条新记录“类别”并返回其自动生成的 ID。如果它不为零,我们会将该结果用于进一步处理。
我知道不应该有兴趣与数据库交谈,下面是过程,只是为了让您了解数据库中发生了什么
PROCEDURE [dbo].[AddDeveloperCategoryReturnID]
@NAME NVARCHAR(MAX),
@CATEGORY_ID INT OUTPUT
AS
BEGIN
INSERT INTO [AllTimeGreatProgrammersDateBase].dbo.CATEGORIES(NAME )
VALUES (@NAME );
SET @CATEGORY_ID = SCOPE_IDENTITY();
SELECT @CATEGORY_ID;
END
一些问题
- 如何使用方法中的“ref”检查返回的值
- 您更喜欢测试什么而不是测试?如果能列出就太好了
【问题讨论】:
-
你为什么首先使用 ref 参数?只需将其设为返回值即可。
-
为什么 categoryId 可以为空?如果你将它转换为 int 并且它是 null 你会得到一个异常。
-
@jon Skeet:使用 ref 不确定如何从存储过程返回结果。 @magnus:根据您的建议修复
标签: c# unit-testing stored-procedures nunit ref