在seed application中是否可以将一个application service打包到web module中?

In seed application can a application service be packaged in web module?

对于我们的 Web 应用程序,我们已经在资源 类 中编写了大部分代码。现在我们想用 "Simple Integration tests".

的 junit 测试来对 web 模块进行单元测试

但我们只能测试我们的存储库,而不能使用这种打包方式测试查找器和其他业务逻辑。

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

中存在的查找器

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

在SeedStack项目中,尤其是使用业务框架时,建议您尊重DDD层模型:

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

您可以使用单元测试和 simple integration tests except for the REST resources since they depend upon a Web runtime environment. These can only be tested in Web integration tests(使用 Arquillian)测试这些组件中的任何一个。

您可以找到一个通过简单集成测试测试的查找器示例 here and here