【问题标题】:Salesforce Controller Extension Testing: System.QueryException: List has no rows for assignment to SObjectSalesforce 控制器扩展测试:System.QueryException:列表没有分配给 SObject 的行
【发布时间】:2014-01-02 22:29:26
【问题描述】:

我正在寻求测试控制器扩展的帮助。我不断收到错误消息:“System.QueryException: List has no rows for assignment to 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 { 静态测试方法 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();
    }

谢谢!

【问题讨论】:

标签: salesforce apex


【解决方案1】:

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

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

改为:

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

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 2023-03-02
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    相关资源
    最近更新 更多