cho*_*obo 13 c# asp.net-mvc unit-testing n-tier-architecture linq-to-sql
使用LINQ to SQL DAL编写单元测试的好方法是什么?
目前我正在做一些数据库测试,需要创建访问数据库的辅助方法,但我不想在我的主要仓库中使用这些方法.
所以我拥有的是DAL的两个副本,一个在我的主项目中,一个在Test项目中.如果我为数据层创建一个单独的项目,那么管理这些东西会更容易吗?我不确定哪种方式可以更好地解决这个问题.
如果我确实创建了一个数据层项目,我是否也会将所有回购项目移动到该项目中?我不确定如何正确设置图层.
谢谢
我正在使用Linq2Sql作为我的DAL层,我把它作为一个单独的项目.在我的域项目中,我有一个存储库接口,然后我在我的DAL项目中使用自定义Linq2SqlCarRepository实现,该类包装生成的Linq2Sql类.
例如.在Car.Core项目中
public interface ICarRepository
{
IQueryable<Car> GetAllCars();
void Add(Car);
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个接口的实现,它包含对生成的Linq2Sql类的访问.
Car.Data项目
public class SqlCarRepository : ICarRepository
{
private CarDataContext _context;
public SqlCarRepository()
{
_context = new CarDataContext();
}
#region ICarRepository Members
public IQueryable<Car> GetAllCars()
{
return _context.Cars;
}
Run Code Online (Sandbox Code Playgroud)
然后,我有一个测试项目Car.Data.Test,然后使用模拟来模拟ICarRepository并进行测试.我认为这与你所描述的略有不同.但是我想你想尝试从你的应用程序中分离你的DAL,这样它就是一个外围设备,如果你愿意,可以换掉它.
我没有完全排序,但我目前有这些项目:
Car.Core --- All the interfaces and domain objects, DTO's etc
Car.Core.Tests --- The tests of the core business logic.
Car.Web --- Asp.net MVC frontend
Car.Web.Tests --- Tests for the website
Car.Data --- The Linq2Sql stuff lives in here
Car.Data.Tests --- The tests for the DAL layer
Run Code Online (Sandbox Code Playgroud)
这就是我目前所拥有的,虽然它可能不是现在最好的做事方式.
我建议您阅读The Onion Architecture并查看MVC StoreFront视频以获取灵感; 祝好运.
归档时间: |
|
查看次数: |
5609 次 |
最近记录: |