|
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 gooderic1977 于 2012-2-8 14:30 发表 ![](http://www.oursteps.com.au/bbs/images/common/back.gif)
Unit Test不能涉及数据库操作?我突兀了。。。。
难道针对DAL的unit test不应该读写数据库?Service Layer以上的Unit Test我会用Mock,但是DAL这一层的unit test我不用mock的。
一般在DAL unit test,里我会在Setup生成测试数据,并在Teardown删除测试数据,这种方法有问题吗?请大牛们指正一下。
DAL的unit test不应该读写database.贴个例子
[TestClass]
public class ConfirmBidDataProviderTests
{
[TestMethod]
public void ConfirmBidDataProvider_GetData_ReturnsImageTypeWhenReturnsValue()
{
//Arrange
const int lotId = 1;
const ImageType expectedImageType = ImageType.Shared;
var dbConnection = MockDbConnection(lotId, expectedImageType);
var configurationService = MockRepository.GenerateStub<IConfigurationService>();
//Act
var dataProvider = new ConfirmBidDataProvider(dbConnection, configurationService);
var data = dataProvider.GetData(lotId,new Guid());
//Assert
Assert.AreEqual(expectedImageType, data.ImageType);
}
MockDb MockDbConnection(int lotId, ImageType? imageType)
{
return new MockDb (new[]
{
new CommandMockResult(
"usp_ConfirmBid_GetData",
CommandType.StoredProcedure,
new Dictionary<string, IComparable>{ { "@LotId", lotId } },
new[]
{
new Dictionary<string, object>
{
{"ImageType", imageType.HasValue ? PersistedStringValueAttribute.GetValue(imageType.Value) : null },
{"ImageId", 1244 },
{"SaleId", 123 },
{"SaleDisplayName", "salename" },
{"SaleCategoryName", "salecategoryname" },
}
}
)
}
);
}
} |
|