@Override
public List<DataRule> parseFile(String filename) {
IFileParser wrapper = new RuleFileParserWrapper();
return wrapper.parseRuleFile(filename);
}
def "should parse file"() {
setup:
def parser = new DefaultRuleParser()
def wrapper = Mock(RuleFileParserWrapper) { // [new] mock result
parseRuleFile('filename.txt') >> []
}
expect:
[] == parser.parseFile('filename.txt')
}
我可以使用Powermock中的expected
,但我想知道Spock有没有办法做到这一点。
每当您需要PowerMock,IMO时,这是一种难闻的气味,也是您应该重构代码的明确迹象。在这种情况下,如果应用程序中没有基于注释的DI框架,则可以通过重构依赖项注入来解决问题,或者通过setter或构造函数注入来解决问题。
有关更详细的解释,请参见此答案(在页面上搜索字符串“inject”)。
测试不是问题,应用程序代码才是!好的测试会发现类似这样的可测试性问题,所以得出你的结论并进行重构。解耦依赖关系总是一个好主意。
我编写了一个类,它读取整个文件并返回内容。
所以我想做一些事情 但我得到了空异常
如何模拟返回已强制转换的模拟对象的方法。 试验方法。
下面是我要为其创建测试的类和方法: 具体地说,我希望模拟getAnalytics.getAll(),这样它就会返回一个我已经定义的字符串。而不是方法执行它的任务。这是我的代码:
我有一个java代码,我在其中调用scala对象的方法(依赖库的)。为了编写单元测试,我想模拟scala对象的方法调用 Operations.Scala
我试图在静态方法中模拟静态方法。 我想知道不使用任何框架是否可能。 有没有办法达到我的目的?