我们可以在 Cordapp 中模拟 "CordaRPCops" 进行测试吗?
Can we mock "CordaRPCops" in Cordapp for testing purpose?
是否可以模拟 CordaRPCops 以便在项目中执行流程而不创建独立节点或内存中节点(如在模拟网络中)?请告诉我。
I am also adding a link which I found informative regarding this from github issues QA
TestDSL
中没有特定的 class 可用模拟 CordaRPCops
。如果您指的是模拟节点的某些功能以进行 cordapp 测试,您应该使用 MockNode。
如果您想在客户端应用程序中模拟 CordaRPCops
,您可以使用 mockito 来实现,示例如下:
测试:
@Test
public void testGetStateList(){
CordaRPCOps cordaRPCOps = Mockito.mock(CordaRPCOps.class);
Service service = new Service(cordaRPCOps);
Vault.Page<MyState> myStatePage =
new Vault.Page<>(Collections.EMPTY_LIST, Collections.EMPTY_LIST, 0L, Vault.StateStatus.ALL, Collections.EMPTY_LIST);
Mockito.when(cordaRPCOps.vaultQuery(MyState.class)).thenReturn(myStatePage);
service.getStateList();
}
服务:
public class Service {
CordaRPCOps cordaRPCOps;
public Service(CordaRPCOps cordaRPCOps) {
this.cordaRPCOps = cordaRPCOps;
}
public List<StateAndRef<MyState>> getStateList() {
return cordaRPCOps.vaultQuery(MyState.class).getStates();
}
}
是否可以模拟 CordaRPCops 以便在项目中执行流程而不创建独立节点或内存中节点(如在模拟网络中)?请告诉我。
I am also adding a link which I found informative regarding this from github issues QA
TestDSL
中没有特定的 class 可用模拟 CordaRPCops
。如果您指的是模拟节点的某些功能以进行 cordapp 测试,您应该使用 MockNode。
如果您想在客户端应用程序中模拟 CordaRPCops
,您可以使用 mockito 来实现,示例如下:
测试:
@Test
public void testGetStateList(){
CordaRPCOps cordaRPCOps = Mockito.mock(CordaRPCOps.class);
Service service = new Service(cordaRPCOps);
Vault.Page<MyState> myStatePage =
new Vault.Page<>(Collections.EMPTY_LIST, Collections.EMPTY_LIST, 0L, Vault.StateStatus.ALL, Collections.EMPTY_LIST);
Mockito.when(cordaRPCOps.vaultQuery(MyState.class)).thenReturn(myStatePage);
service.getStateList();
}
服务:
public class Service {
CordaRPCOps cordaRPCOps;
public Service(CordaRPCOps cordaRPCOps) {
this.cordaRPCOps = cordaRPCOps;
}
public List<StateAndRef<MyState>> getStateList() {
return cordaRPCOps.vaultQuery(MyState.class).getStates();
}
}