如果我使用的条款不正确,我必须先道歉.我只使用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)
我们将非常感激地提供任何帮助.
作为 Go 新手,我很难确定问题区域,但希望为您提供一些事实会有所帮助。
我正在使用一个Content-Encoding以 gzip形式返回的 API 。我编写了以下内容来编码我的响应结构:
reader, err = gzip.NewReader(resp.Body)
defer reader.Close()
// print to standard out
//_, err = io.Copy(os.Stdout, reader)
//if err != nil {
// log.Fatal(err)
//}
// Decode the response into our tescoResponse struct
var response TescoResponse
err := json.NewDecoder(reader).Decode(&response)
Run Code Online (Sandbox Code Playgroud)
为简洁起见,我删除了错误处理,但有趣的是,如果我取消对 stdout 打印的注释,我会得到预期的结果。但是,解码并没有给我我所期望的。任何指针?是不是结构必须完全映射到响应?
这是完整的示例:https : //play.golang.org/p/4eCuXxXm3T