无法使用Spock模拟Java方法调用

问题描述 投票:0回答:1

我正在尝试使用Spock模拟下面的java方法。


        public List<DiffEntry> listDifferences(String oldCommit, String newCommit, Git git)
          throws GitAPIException, RevisionSyntaxException, AmbiguousObjectException,
          IncorrectObjectTypeException, IOException {

        logger.info(
            "Inside DiffCommits#listDifferences to calculating difference commits refs {}  and {} ",
            oldCommit, newCommit);

        ObjectId oldTree = git.getRepository().resolve(oldCommit);
        ObjectId newTree = git.getRepository().resolve(newCommit);

        if (oldTree == null || newTree == null) {
          logger.warn(
              "Could not resolve either old {} or new commits {}, difference cant not be calculated",
              oldCommit, newCommit);
          throw new RefNotFoundException("Unable to resolve tag reference. Invalid tag provided");
        }

        ObjectReader reader = git.getRepository().newObjectReader();
        CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
        oldTreeIter.reset(reader, oldTree);

        CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
        newTreeIter.reset(reader, newTree);

        DiffFormatter df = new DiffFormatter(new ByteArrayOutputStream());

        df.setRepository(git.getRepository());
        List<DiffEntry> entries;
        entries = df.scan(newTreeIter, oldTreeIter);
        df.close();

        if (logger.isDebugEnabled()) {
          for (int i = 0; i < entries.size(); i++) {
            logger.debug("Entry: " + entries.get(i));
          }
        }

        return entries;
      }

一切正常,但以下代码的模拟失败

DiffFormatter df = new DiffFormatter(new ByteArrayOutputStream());

并在]出现错误>

df.setRepository(git.getRepository());

将提供任何帮助

我正在尝试使用Spock来模拟下面的java方法。公共List listDifferences(String oldCommit,String newCommit,Git git)抛出GitAPIException,...

java spock
1个回答
0
投票

读取spock framework mocking and stubbing manual您的模拟将如下所示

© www.soinside.com 2019 - 2024. All rights reserved.