0

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

是否有任何特定原因导致控制器中的方法中的记录不可用?

4

1 回答 1

0

检查1:

这可能是一些访问问题。所以检查关卡Object中的访问Profile

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

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

检查2:

如果它发生在一个TriggerTrigger_handler相关的Test Class. 那么请看下面的场景。

例如:Order假设,您正在处理OrderItem对象。Order您在对象 (after insertafter 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.
于 2019-05-29T14:20:21.003 回答