【发布时间】:2017-06-29 10:02:36
【问题描述】:
我有一个带有重载方法进程的 Java 类 MyClass:
class MyClass {
private String process(String requestId, String request) {
// Initial processing, creates processObject from request
// then class actual processing:
String temp = process ( processObject );
// do stuff I want to test, generate response
return response;
};
private String process( ProcessClass processObject ) {
String result;
// do actual processing of processObject
return result;
}
}
我想使用 Spock 测试第一个 process() 方法。我正在尝试使用 Spy 来模拟重载的进程(ProcessClass)。到目前为止,这是 testProcess.groovy:
class TestProcessUsingString extends Specification {
given:
def testInput = "TestInput"
def myObject = Spy(MyClass) {
process(_ as ProcessClass) >> "My result string"
}
when:
def response = myObject.process("TestInput")
// Check response
此方法无法像我预期的那样模拟方法 process(ProcessClass...)。我已经咨询了http://spockframework.org/spock/docs/1.0/interaction_based_testing.html,但我无法弄清楚。
如何模拟 MyClass.process(ProcessClass) 以便从中返回虚假答案并将其传递给其他流程函数?
【问题讨论】:
-
为什么不把要测试的东西移到可测试的方法中呢?
标签: java unit-testing groovy spock