在种子应用程序中,应用程序服务可以打包在Web模块中吗?

时间:2016-10-18 11:30:14

标签: packaging seedstack

对于我们的Web应用程序,我们在Resources类中编写了大部分代码。现在,我们希望使用"简单集成测试"进行junit测试对Web模块进行单元测试。

但我们只能通过这种包装测试我们的存储库而不是测试者和其他业务逻辑。

我们是否需要将代码从Resource类移动到可以在单元测试中注入的应用程序服务?如果是,我们可以在Web模块中编写这些服务吗?通常我们在应用程序模块中编写这些服务,但在这种情况下,服务无法访问Web中的查找程序

1 个答案:

答案 0 :(得分:0)

您的资源类应该只包含公开应用程序REST API所需的代码:没有业务逻辑,没有应用程序(用例)逻辑,没有数据访问。资源类只应使用其他组件(如存储库,服务和查找程序)来实现所需的结果。

在SeedStack项目中,特别是如果您正在使用业务框架,建议您尊重DDD层模型:

  • 域层是业务表达的位置,包含域对象(实体和值对象)和域服务的聚合。
  • 应用层负责驱动应用程序的工作流程,通过应用程序服务执行系统的用例。该层也可以通过单元测试和简单的集成测试进行测试。
  • 接口层处理与其他系统的交互。在您的情况下,这是使用REST资源完成的。必要时,这些资源可以依赖查找数据库来查询数据库。

您可以使用单元测试和simple integration tests测试任何这些组件,但REST资源除外,因为它们依赖于Web运行时环境。这些只能在Web integration tests(使用Arquillian)进行测试。

您可以找到通过简单集成测试herehere测试的finder示例。