我正在寻找测试控制器扩展的一些帮助。我一直收到错误:“System.QueryException:List没有用于赋值给SObject的行”,这是指我班级中的SOQL语句。
类
public class productdata {
public productdata(ApexPages.StandardController controller) {
}
public String getTag(){
Product2 prod;
prod = [SELECT Name FROM Product2 WHERE Id = :ApexPages.currentPage().getParameters().get('id')];
return Prod.Name;
}
测试类
@isTest
私有类TestProductData { static testMethod void TestProductDataMethod(){
Product2 TP = new Product2(Name='TestRecord');
insert TP;
System.assertEquals('TestRecord', TP.name);
PageReference pageRef = page.productpage;
Test.setCurrentPage(pageRef);
ApexPages.StandardController sc = new ApexPages.standardController(TP);
productdata controller = new productdata(new ApexPages.StandardController(TP));
ApexPages.currentPage().getParameters().put('id', '01t300000007hKrAAI');
controller.getTag();
}
谢谢!
答案 0 :(得分:2)
您不应手动分配记录ID(因为它们会随着每次测试而改变)。
ApexPages.currentPage().getParameters().put('id', '01t300000007hKrAAI');
取而代之的是:
ApexPages.currentPage().getParameters().put('id', TP.id);