【问题标题】:How to mock model objects in SAP Hybris?如何在 SAP Hybris 中模拟模型对象?
【发布时间】:2020-05-03 15:40:27
【问题描述】:

在 SAP Hybris 中编写集成测试时,我遇到异常,暗示模型对象在测试用例期间不可用。

在初始化期间正常运行的 ImpEx 似乎没有在这里运行。使用模型服务创建对象变得越来越忙。

还有其他方法吗?我在产品中定义的自定义对象(如 ABCProduct 扩展产品)以及它们的值呢?是否也可以模拟它们?BaseSite 和 PriceRow 呢?

【问题讨论】:

    标签: hybris


    【解决方案1】:

    关于测试系统,您需要了解一些事情。

    租户

    您通常与master 租户合作。然而,测试系统有自己的租户,称为junit。租户有点像运行相同代码的 hybris 服务器的单独数据集。这样,您可以在相同的基础架构上运行不同的商店,但每个商店只能访问为租户提供的数据。它是如何工作的?每个租户都有一个表前缀,只有租户master 有一个空前缀。所以主租户的products 表称为“products”,但junit 租户的“products”表称为“junit_products”。

    延伸阅读:https://help.sap.com/viewer/d0224eca81e249cb821f2cdf45a82ace/1905/en-US/8c14e7ae866910148e59ebf4a2685857.html

    初始化

    当您使用ant initialize 或管理控制台进行初始化时,您通常只初始化主租户。当您要初始化 junit 租户时,您需要在管理控制台中更改为 junit 租户或运行ant initialize -Dtenant=junit。但是,这只会创建最基本的数据。

    在“执行测试”部分中有关如何在管理控制台中执行初始化的更多信息:https://help.sap.com/viewer/d0224eca81e249cb821f2cdf45a82ace/1905/en-US/aae25ecb74ab4bd69cc5270ffd455459.html

    创建测试数据

    您可以继承一些类来创建集成测试,但只有 ServicelayerTest 提供了创建示例数据的方法。所有这些方法都导入位于/hybris/bin/platform/ext/core/resources/servicelayer/test/的impex文件

    createCoreData() 创建语言、货币、单位等。请参阅:testBasics.csv

    createDefaultCatalog() 创建包含在线目录版本和基本示例产品的示例产品目录。见:testCatalog.csv

    createHardwareCatalog() 创建包含分阶段和在线版本、产品和分类的示例产品目录。见testHwcatalog.csvtestClassification.csv

    createDefaultUsers() 创建带有地址等的示例客户。参见testUser.csv

    导入自定义数据

    要导入 ServicelayerTest 方法未涵盖的数据,我推荐两种方法之一。

    1. 使用ModelService 和其他服务来创建您的数据。例如。您可以使用OrderService 创建样品订单。您还可以创建实用程序类,为您提供创建示例数据。您可以通过使用@Resource 注释来连接您需要的每个服务。
    2. 使用 impex 文件创建您需要的所有数据。您可以将它们拆分为满足不同需求的不同文件(例如客户、订单、产品......)。 ServicelayerTest 中的方法 importCsv(String pathToFile, String encoding) 为您提供了导入它们的机会。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-07
      • 2022-10-17
      • 1970-01-01
      • 2018-01-12
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多