我有一个“ComparisonService”课,下面是fn -
public HashMap <String, Map<String, Object>> fetchTableData(DataSource dataSource, List<Object> tableInfo){
table.setTableInfo(tableInfo);
HashMap<String, Map<String, Object>> records = table.fetchData(dataSource);
System.out.println(records.size());
return records;
}
此表是其他类表的对象
我正在为此方法编写spock测试 -
class ComparisonSpec extends spock.lang.Specification{
Table table=Mock()
def DataSource dataSource
def List<Object> tableInfo=[1]
def setup()
{
//def DataSource dataSource
}
def "first function"()
{
given:
def ComparisonService comparison= new ComparisonService()
when:
comparison.fetchTableData(dataSource,tableInfo)
then:
1*table.setTableInfo(_ as String)>>true
1*table.fetchData(_ as DataSource)
}
当我运行它时,我得到了
空指针异常 comparison.fetchTableData(数据源,tableInfo)。
为什么会这样。
答案 0 :(得分:0)
好的,我可以看到几点:
首先 def DataSource dataSource
您正在尝试静态和动态地键入变量。这应该是:
DataSource dataSource
def dataSource
<强>第二强>
您声明变量dataSource
但从不初始化它。在您需要的测试或设置中:
dataSource = <what ever data source is>
答案 1 :(得分:0)
原因可能是records的变量为null,您应该模拟记录。