Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何使用LLBLGen进行模拟_Unit Testing_Mocking_Llblgen - Fatal编程技术网

Unit testing 如何使用LLBLGen进行模拟

Unit testing 如何使用LLBLGen进行模拟,unit-testing,mocking,llblgen,Unit Testing,Mocking,Llblgen,你怎么能嘲笑LLBLGen?我看到有一个ILinqMetaData接口,但它没有提供任何有用的模拟方法。我假设您希望对ILinqMetaData接口以及生成的实体接口进行编程,以保持对象与数据的松散耦合。有人有简单测试/模拟的例子吗?我认为它不仅限于LLBLGen,也许这可以帮助: 就个人而言,我通常不会测试我的数据库访问或存储库,只测试在实体上运行的逻辑,或对整个堆栈(包括数据库)运行的集成测试 更新:这有帮助吗?它允许您通过模拟IOrderRepository来测试逻辑,而无需执行任何获取

你怎么能嘲笑LLBLGen?我看到有一个ILinqMetaData接口,但它没有提供任何有用的模拟方法。我假设您希望对ILinqMetaData接口以及生成的实体接口进行编程,以保持对象与数据的松散耦合。有人有简单测试/模拟的例子吗?

我认为它不仅限于LLBLGen,也许这可以帮助:

就个人而言,我通常不会测试我的数据库访问或存储库,只测试在实体上运行的逻辑,或对整个堆栈(包括数据库)运行的集成测试

更新:这有帮助吗?它允许您通过模拟IOrderRepository来测试逻辑,而无需执行任何获取/持久化逻辑:

public class MyBusinessLogic 
{
    IOrderRepository orders;

    public MyBusinessLogic(IOrderRepository orders) 
    {
      this.orders = orders; 
    }

    public DoSomethingTestable(OrderEntity order)
    {
      order.Total = 100;
      orders.Save(order);
    }
}

我们使用的是自服务范式,因此实体与数据库相关联。我正在想办法解决这个问题。如果我想要API的灵活性,自我服务并不是我的第一选择。。。自助服务就是要抽象出数据访问,您必须能够假设它是有效的,那么您不应该关心在实体上运行的逻辑,而不管数据是否被持久化/获取吗?是的,但是如果我想更新“Order”对象并持久化它,我是否编写了一个只更新我想要的特定信息片段的函数,或者我可以使用脏位之类的东西?理想情况下,我可以将实体对象用作业务逻辑中的数据持有者。您可以在类中编写逻辑,修改传入的实体,然后将其传递到(模拟的)存储库进行保存,然后检查该实体是否包含预期的修改?是,我将重写实体类中已经存在的逻辑。我希望避免这种情况,但如果这不可能,那么在我知道之前这是不可能的。。但你有没有找到答案?我现在也在尝试模拟数据库和LinqMetaData类。我可以伪造ILinqMetaData,但我希望它返回模拟的数据,但我不知道该怎么做。@paqogomez我真的不记得了,但我认为当你生成实体时,你可以让它生成接口模板和其他东西。我会看看我是否能做一些挖掘并记住我们是如何做到的。。。但是不要把你的希望寄托在期待上。我已经为实体生成了接口。我的问题是LinqMetaData返回
数据库
,我需要模拟
数据库
类。我并不是没有想法,但我也有点被应用程序的架构所束缚。一切都会有帮助的,谢谢。@paqogomez我想我们只是使用了存储库,并将llblgen的东西包装在里面