在写分页功能的TestClass的时候,遇到了如下错误
SOQL offset must be a non-negative value
很明显,发生这个错误的原因,就是因为SOQL语句的OFFSET的值被设置成了负数。
leadViewQuery = leadViewQuery + ' And Id in :getLeadIds LIMIT :LimitSize OFFSET :OffsetSize' ;
下面是错误的代码
Test.startTest(); ctr.adCondition = '含む'; ctr.scAddress = '東京都'; ctr.search(); ctr.FirstPage();
ctr.previous(); <---- 根本原因就是在前面调用FirstPage的时候,FirstPage方法已经把OffsetSize的值,设置为0,那么再调用previous的时候,肯定OffsetSize的值被设置成了负数。 ctr.next(); Test.stopTest();
Test.startTest();
ctr.adCondition = '含む';
ctr.scAddress = '東京都';
ctr.search();
ctr.FirstPage();
ctr.next(); //最简单的方法,就是把Next方法移到前面来,就能够解决这个【SOQL offset must be a non-negative value】的错误
ctr.previous();
Test.stopTest();
public void FirstPage()
{
OffsetSize = 0;
searchWithPagnationOrNot(true);
}
public void previous()
{
OffsetSize = OffsetSize - LimitSize;
searchWithPagnationOrNot(true);
currentPage--;
}
public void next()
{
OffsetSize = OffsetSize + LimitSize;
searchWithPagnationOrNot(true);
currentPage++;
}