mockito:订单失败的验证:两次相同

时间:2016-12-14 12:55:43

标签: unit-testing mockito

我面对以下情况:

    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>())); 的其他方法 这样它们不止一次被调用。

这是一个有价值的提示吗?

0 个答案:

没有答案
相关问题