Testing Controller Extensions: Mocking the Controller

DEX450 - Module 20: Testing Visualforce Controllers

📄 第 531 页 🎬 视频课程

课程章节介绍

同学们,今天我们来聊聊如何在Salesforce中测试控制器扩展。首先,我们要明白,控制器扩展通常会依赖于它所扩展的控制器的一些方法或数据。这就意味着,在测试控制器扩展时,我们需要“嘲笑”或模拟这些控制器,以确保我们的测试能够顺利进行。 想象一下,你有一个控制器扩展,它需要从一个标准的控制器中获取一些数据。为了测试这个扩展,我们不能直接使用真实的控制器,因为那样可能会引入不必要的外部依赖,导致测试结果不可预测。所以,我们需要创建一个“假”的控制器,也就是我们说的“嘲笑”控制器。 接下来,我们来看一个简单的例子。假设我们有一个名为`MyControllerExt`的控制器扩展,它依赖于一个标准的`ApexPages.StandardController`。在测试代码中,我们首先创建一个测试用的`Account`对象,并填充一些测试数据。然后,我们实例化一个`ApexPages.StandardController`,并将这个测试用的`Account`对象传递给它。 ```apex Account testAccount = new Account(); // 填充测试数据 ApexPages.StandardController stdCtrl = new ApexPages.StandardController(testAccount); MyControllerExt testExt = new MyControllerExt(stdCtrl); ``` 在这个例子中,`stdCtrl`就是我们“嘲笑”的控制器。我们将它传递给`MyControllerExt`,这样在测试过程中,`MyControllerExt`就可以使用这个模拟的控制器来获取数据或调用方法,而不会影响到真实的控制器。 最后,我们可以调用`MyControllerExt`中的setter、action和getter方法,来验证它们的行为是否符合预期。这样,我们就能够在不依赖真实控制器的情况下,全面测试我们的控制器扩展了。 希望这个解释能帮助大家更好地理解如何在Salesforce中测试控制器扩展。如果有任何问题,欢迎随时提问!