如何在SAP Hybris中模拟模型对象?

如何在SAP Hybris中模拟模型对象?,hybris,Hybris,在SAP Hybris中编写集成测试时,我遇到了一些异常,这意味着在测试用例期间模型对象不可用 在初始化过程中正常运行的ImpEx似乎不在这里运行。它正在使用模型服务创建对象 是否有其他方法?我在产品中定义的自定义对象(如ABCProduct extending product)以及它们的值如何?是否也可以模拟它们?BaseSite和PriceRow如何?关于测试系统,您需要了解一些事情 租户 通常您与主租户一起工作。但是,测试系统有自己的租户,名为junit。租户有点像运行相同代码的hybri

在SAP Hybris中编写集成测试时,我遇到了一些异常,这意味着在测试用例期间模型对象不可用

在初始化过程中正常运行的ImpEx似乎不在这里运行。它正在使用模型服务创建对象


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

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

租户 通常您与
主租户一起工作。但是,测试系统有自己的租户,名为
junit
。租户有点像运行相同代码的hybris服务器的单独数据集。这样,您可以在同一基础设施上运行不同的店铺,但每个店铺只能访问针对租户的数据。它是如何工作的?每个租户都有一个表前缀,只有租户
master
有一个空前缀。因此,主租户的
products
表称为“products”,而junit租户的“products”表称为“junit\u products”

进一步阅读:

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

有关如何在管理控制台中“执行测试”部分中执行初始化的更多信息:

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

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

createDefaultCatalog()
使用在线目录版本和基本样本产品创建样本产品目录。请参阅:
testCatalog.csv

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

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

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

  • 使用
    ModelService
    和其他服务创建数据。例如,您可以使用
    OrderService
    创建示例订单。您还可以创建实用程序类,为您提供创建示例数据的功能。您可以通过使用
    @Resource
    注释对所需的每项服务进行注释来连接
  • 使用impex文件创建所需的所有数据。您可以将这些文件拆分为不同的文件,以满足不同的需求(例如,客户、订单、产品…)。
    ServicelayerTest
    中的方法
    importsv(字符串路径文件,字符串编码)
    为您提供了导入这些文件的机会