功能本身的单元测试相对简单,如果我们有经验,我们不需要了解更多。只有对此所需的对象的boostrapping仍然有点超载样板代码。测试首先启动内存中的Fabric网络,在其上安装业务网络,然后以默认管理员身份对其进行身份验证。因为这个Composer提供了库composer-admin ,composer-client ,composer-common 和composer-connector-embedded 。在测试设置之后,我们现在可以针对嵌入式网络编写测试用例。由于其长度,设置代码未包含在列表中,但可以在test/EngineSupplychainSpec.js 中的主分支上查看和测试。
用于测试交易类型的单元测试用例通常具有类似的模式。他们使用其属性和关系重新创建交易,针对网络执行交易,然后检查所涉及的资产和参与者的数据状态。我们来看看createEngineAsset 的现有测试用例。
- describe(‘EngineSupplychainSpec’, () => {
-
- // setup is done in the before and beforeEach hook
- // results are the bnc (BusinessNetworkConnection), target namespace
- // as well as test assets, participants and required registries
- describe('createEngineAsset', () => {
- it('should create an Engine by submitting a valid EngineCreation transaction', async () => {
- const factory = bnc.getBusinessNetwork().getFactory()
-
- const engineCreationTrans = factory.newTransaction(namespace, 'EngineCreation')
- engineCreationTrans.data = factory.newConcept(namespace, 'EngineProperties')
- engineCreationTrans.data.brand = 'Audi'
- engineCreationTrans.data.model = 'Fancy engine model'
- engineCreationTrans.data.horsePower = 400
- engineCreationTrans.data.cubicCapacity = 4000
- engineCreationTrans.data.cylindersAmount = 10
-
- const manufacturerRegistry = await bnc.getParticipantRegistry(namespace + '.Manufacturer')
- await manufacturerRegistry.addAll([])
- engineCreationTrans.manufacturer = factory.newRelationship(namespace, 'Manufacturer', testManufacturer.$identifier)
-
- await bnc.submitTransaction(engineCreationTrans)
-
- const allEngines = await engineRegistry.getAll()
- allEngines.length.should.equal(2)
- })
- })
- })
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|