我正在为控制器创建一个测试类,我不知道为某个对象创建的记录在控制器中的方法中是不可见的。该方法有一个选择查询,它给出了空白输出。如果我在测试类中运行相同的查询,那就是给我输出。其他对象的其余记录也可见并且工作正常。
为什么记录在控制器中的方法中不可用?
答案 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_handler
或Test Class
中发生。然后,请参见下面的情况。
示例::假设您正在处理Order
和OrderItem
对象。您在Order
对象(after insert
或after 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.