我正在为控制器创建一个测试类,但我不知道出于什么原因,为对象创建的记录在控制器的方法中不可见。该方法有一个选择查询,它给出了空白输出。如果我在测试类中运行相同的查询,那就是给我输出。不同对象的其余记录也可见并且工作正常。
是否有任何特定原因导致控制器中的方法中的记录不可用?
我正在为控制器创建一个测试类,但我不知道出于什么原因,为对象创建的记录在控制器的方法中不可见。该方法有一个选择查询,它给出了空白输出。如果我在测试类中运行相同的查询,那就是给我输出。不同对象的其余记录也可见并且工作正常。
是否有任何特定原因导致控制器中的方法中的记录不可用?
检查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
我们将在插入订单记录后立即开始执行。在触发器中,我们可能也使用了OrderItem
记录。但它们在 Trigger 中尚不可用。
因为,到目前为止,我们只创建了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.