我面对以下情况:
this.inOrderExec.verify(this.executor, atLeastOnce())
.execute(eq(WORKING_DIR),
isNull(),
eq(this.settings.getLatex2pdfCommand()),
eq(LatexProcessor.buildLatexArguments
(this.settings,
this.settings.getPdfViaDvi(),
this.texFile)),
eq(this.dviPdfFile));
我不明白的是,Mockito似乎看到了什么 寻找我和想要的一样,但看似不是。 是什么原因???
代码如下:
verify(this.executor, atLeastOnce())
我也验证了:如果我写
,代码就可以了atLeastOnce()
即。没有订购。
当然,如果有必要,我可以发布更多代码。
更新:当且仅当如此,似乎会出现此问题
我无法删除inOrder
参数。
也许这对那里的人来说是一个有价值的暗示....
更新:
我发现,在一种方法中,要么所有验证都与this.inOrder.verify(this.fileUtils).matchInFile
一起工作,就像那样:
private void verifyConstrLatexMainDesc() {
// FIXME: doubling from mockConstrLatexMainDesc()
String[] suffixes = new String[] {
LatexProcessor.SUFFIX_VOID,
LatexProcessor.SUFFIX_PDF,
"."+this.settings.getPdfViaDvi().getLatexLanguage(),
LatexProcessor.SUFFIX_LOG,
LatexProcessor.SUFFIX_IDX,
LatexProcessor.SUFFIX_IND,
LatexProcessor.SUFFIX_ILG,
LatexProcessor.SUFFIX_GLS,
LatexProcessor.SUFFIX_GLO,
LatexProcessor.SUFFIX_GLG
};
for (int idx = 0; idx < suffixes.length; idx++) {
//this.inOrder.
//if (idx == 1 ||idx == 2) {continue;}
verify(this.fileUtils, atLeastOnce())
.replaceSuffix(this.texFile, suffixes[idx]);
}
}
或两者都没有。
特例:
atLeastOnce()
好的,我看到如果省略索引1和2,这就有效。
然后人们也可以离开atLeastOnce()
我怀疑问题是创建了一个新字符串,对吧?
或者在我的情况下,两个参数是'.pdf'
仅适用于builder.Register(c => new CommandAHandler(c.Resolve<WriteContext>()));
builder.Register(c => new CommandBHandler(c.Resolve<ReadContext>()));
的其他方法
这样它们不止一次被调用。
这是一个有价值的提示吗?