在测试类中创建的记录在控制器中不可见

时间:2014-09-29 11:13:11

标签: testing salesforce apex test-class

我正在为控制器创建一个测试类,我不知道为某个对象创建的记录在控制器中的方法中是不可见的。该方法有一个选择查询,它给出了空白输出。如果我在测试类中运行相同的查询,那就是给我输出。其他对象的其余记录也可见并且工作正常。

为什么记录在控制器中的方法中不可用?

1 个答案:

答案 0 :(得分:0)

检查1:

可能是一些访问问题。因此,请检查Object级别的Profile访问权限。

如果您是系统管理员,请尝试以系统管理员用户身份运行来创建记录。

User adminUser = [SELECT Id,Name FROM User WHERE Id =: UserInfo.getUserId()];
System.runAs(adminUser){
    //Test Class block
}

检查2:

如果它在与Trigger相关的Trigger_handlerTest Class中发生。然后,请参见下面的情况。

示例::假设您正在处理OrderOrderItem对象。您在Order对象(after insertafter update)上有一个触发器。

要创建任何OrderItem,首先需要创建Order。因此,您将首先插入一个Order,然后再插入OrderItem。

由于我们在Order对象上有一个触发器,因此trigger将在我们插入Order记录后立即开始执行。 在触发中,我们可能还使用了OrderItem记录。但是它们在触发器中还不可用

因为,到目前为止,我们仅创建了Order记录,并且触发器立即开始执行,而我们尚未创建OrderItem。

因此,请尝试以下方法:

Create/Insert an Order.
Create OrderItems by using the above Order id.
Now just do a simple update on Order record and see if it works.