Spock - 返回固定值不按预期工作

Sio*_*ion 5 java groovy stub spock

如果我使用的条款不正确,我必须先道歉.我只使用groovy/java进行自动化任务(Gradle),而且我没有多年提供生产级软件的经验.

所以,我遇到的挑战如下:我有一个规范试图测试返回字符串是否符合预期(几乎与相同).

def "pretty print returns correct string"() {
    setup:
    X509Certificate stubCert = Stub()
    stubCert.getSubjectDN().toString() >> "Test"

    when:
    def output = X509CertificateUtils.prettyPrint(stubCert)

    then:
    output == "Subject: Test"
}
Run Code Online (Sandbox Code Playgroud)

但是,区别在于我的方法约束返回一个Principal对象,而它的对象是toString(),我真的想要存根.我以为我在上面正确地做了这个,但它没有给出我期望的结果.

这是我的助手班.

import java.security.cert.X509Certificate

class X509CertificateUtils {

    static def prettyPrint(X509Certificate x509Certificate) {
        return "Subject: ${x509Certificate.getSubjectDN()}"
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我运行此测试,我会收到以下错误:

output == "Subject: Test"
|      |
|      false
|      38 differences (20% similarity)
|      Subject: (Mock for )t(ype 'Principal' named 'dummy')
|      Subject: (Tes------)t(-----------------------------)
Subject: Mock for type 'Principal' named 'dummy'
Run Code Online (Sandbox Code Playgroud)

我们将非常感激地提供任何帮助.

bez*_*max 6

只需创建第二个存根:

X509Certificate stubCert = Stub()
Principal princ = Stub()
princ.toString() >> "Test"
stubCert.getSubjectDN() >> princ
Run Code Online (Sandbox Code Playgroud)