Salesforce Controller扩展测试:System.QueryException:List没有用于分配给SObject的行

时间:2014-01-02 22:29:27

标签: salesforce apex

我正在寻找测试控制器扩展的一些帮助。我一直收到错误:“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();
    }

谢谢!

1 个答案:

答案 0 :(得分:2)

您不应手动分配记录ID(因为它们会随着每次测试而改变)。

ApexPages.currentPage().getParameters().put('id', '01t300000007hKrAAI');

取而代之的是:

ApexPages.currentPage().getParameters().put('id', TP.id);