zoukankan      html  css  js  c++  java
  • Apex 中文件夹相关的单元测试

    Salesforce 中的文件夹

    在 Salesforce 中,我们可以建立各种文档、报表、仪表板、电子邮件模板等。它们都被保存在相应的文件夹中。

    Salesforce 的后端将这些文件夹保存为 Folder 类型的对象。这样,我们就可以在 Apex 代码中通过 Folder 对象对文件夹进行操作。

    单元测试的问题

    在 Apex 中是不能创建文件夹的。这样就导致在进行文件夹相关的单元测试时,我们无法新建文件夹作为测试数据。

    举个例子:电子邮件模板的单元测试。

    Salesforce 提供了“电子邮件模板”功能。用户可以在其中定义文本或者 HTML 类型的模板。这些模板可以接收相应的数据并动态生成电子邮件发送给用户。

    在 Apex 中,我们可以使用 SingleEmailMessage 类来发送电子邮件,并且在其中调用 setTemplateId() 函数来设置电子邮件需要使用的模板。

    如果我们要在单元测试中新建一个电子邮件模板作为测试数据,那么我们就必须设置其所属的文件夹(FolderId)。

    问题来了:由于无法在代码中新建文件夹,我们就无法新建电子邮件模板,从而无法继续测试。

    在这种情况下我们可以使用 SeeAllData=true 来让单元测试函数使用现有的数据,但这不是一个好的选择,因为可能会导致安全问题。

    另一个解决的方法就是直接使用当前用户的 ID 来作为文件夹的 ID。在 Salesforce 中,个人文件夹的 ID 就是该用户的 ID。

    比如:

    EmailTemplate testTemplate;
    // 设置其他属性
    // ...
    
    // 将当前用户的 ID 作为文件夹 ID,保存这个测试用的模板
    testTemplate.folderId = UserInfo.getUserId();
    
    // 继续测试函数的逻辑
    // ...
    
  • 相关阅读:
    linux读写锁
    正则表达式
    C++原型模式和模板模式
    C++外观模式和组合模式
    C++代理模式
    c++桥接模式
    Linux常用命令history/tcpdump/awk/grep
    C++委托模式
    c++ 读写锁
    布衣客
  • 原文地址:https://www.cnblogs.com/chengcheng0148/p/apex_unit_test_with_folders.html
Copyright © 2011-2022 走看看