我创建了一个应用程序,其中使用了Zookeeper的异步api。我无法编写以下方法的模拟测试。
public static void createAssignNode(String path, long endPointer) {
zk.create(path, Bytes.toBytes(endPointer),
ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT,assignTaskWorkerCallback,endPointer);
}
static AsyncCallback.StringCallback assignTaskWorkerCallback = new AsyncCallback.StringCallback() {
public void processResult(int resultCode, String path, Object endPointer, String name) {
switch (KeeperException.Code.get(resultCode)) {
case CONNECTIONLOSS:
LOG.error("Connection Loss");
throw new IllegalStateException();
case OK:
LOG.info("My created task name: " + name);
break;
default:
LOG.error("Something went wrong" + KeeperException.create(KeeperException.Code.get(resultCode), path));
}
}
};
我读了很多关于如何编写模拟测试用例的信息,但在编写上述方法的模拟测试时仍然面临问题。
我是第一次写模拟测试
要编写测试,您首先需要知道要测试的行为。如果你不能简明扼要地描述你正在测试的行为,那么你将无法编写一个简洁的测试用例。
这段代码中唯一适合使用模拟进行测试的部分是测试您是否向 zookeeper 注册了回调。要对此进行测试,您需要将一个模拟动物园管理员实例注入到您的 zk 变量中。对于您当前的设计来说,这可能会很棘手,因为您已经将其设置为静态。如果 zk 是注入到构造函数中的实例成员,那么您可以轻松地在测试用例中将其替换为模拟对象。