2013-02-20 87 views
0

我有一个三层Web应用程序:Web>服务>核心。我刚刚添加了一个Services.Tests单元测试项目,我正在试图弄清楚如何开始。如何测试MVC4中的服务层?

我已经添加了从Services.Tests项目服务项目的引用。然后,我在我的测试类创建的Services.service类的一个实例:

[TestClass] 
public class CrudTests 
{ 
    private readonly SetServices _setService = new SetServices(); 

    [TestMethod] 
    public void TestMethod() 
    { 

但我得到一个错误约_setService需要我的核心项目的引用。

第一个问题:为什么我需要引用我的核心项目如果Services项目已经引用它?

我已经添加了引用并运行了通过的空测试。然后我试着打电话给我的服务类中的一种基本方法:

[TestMethod] 
public void TestMethod() 
{ 
    _setService.CreateSet("Test Set", "Test Set Details", null); 

但我得到一个providerIncompatileException

第二个问题:建立/使用专用测试数据库的建议方法是什么?

第三个问题:如何告诉我的测试项目使用哪个数据库?

+0

未来,尝试将不相关的问题分成不同的帖子(至少有3个)。 – rae1 2013-02-20 18:45:20

回答

1

通过部分,

为什么我需要引用我的核心项目,如果该项目服务已经引用了吗?

根据this answer,项目引用不可继承。 ServicesCore有依赖性这一事实并不意味着谁消费Services需要知道任何关于Core的事情,或者就此而言使用Core中专门定义的任何逻辑。

创建/使用专用测试数据库的建议方法是什么?

它完全取决于什么数据库,什么ORM,什么框架等。有没有固定的方式来做到这一点。

我如何告诉我的测试项目中使用的数据库?

以同样的方式告诉应用程序执行此操作:通过配置。只需创建一个DatabaseStub并对其中的测试数据库信息进行硬编码。

+0

再次感谢您的帮助:) – RobVious 2013-02-20 22:56:10