假设我有以下设置器:

public void setNewPath(final String path) {
  if (StringUtils.hasText(path) && !path.endsWith(File.separator)) {
            this.newPath = path + File.separator;
        } else {
            this.newPath = path;
        }
    }


我想在测试方法中模拟参数path。那可能吗?

最佳答案

这不是嘲笑的好问题。考虑到字符串是不可变的,在任何情况下都不会在适当的地方修改参数,尽管模拟可以告诉您是否调用了某个方法,但它不会让您跟踪要进行的修改的值。

正如布赖恩·阿格纽(Brian Agnew)在评论中所发表的那样:“使用各种输入来测试方法,并断言某些行为(例如newPath的设置)”。确保newPath具有吸气剂,即使该吸气剂仅用于测试(并已记录在案)。

09-04 21:24