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();
// 继续测试函数的逻辑
// ...
Apex 中文件夹相关的单元测试的更多相关文章
- java文件夹相关操作 演示样例代码
java文件夹相关操作 演示样例代码 package org.rui.io; import java.io.File; import java.io.FilenameFilter; import ja ...
- Android 项目中文件夹的说明与作用(转)
(转自:http://blog.csdn.net/goodshot/article/details/11529731) Android 项目中文件夹的作用 1. src:存放所有的*.java源程序. ...
- Linux 文件夹相关常用命令
Linux 文件夹相关常用命令 查看 ls -la -l 列出详细信息 -a 列出全部,包括.和.. 删除 rm <folder> -rf -r 就是向下递归,不管有多少级目录,一并删 ...
- 2017-7-19-每日博客-关于Linux下的CentOS中文件夹基本操作命令.doc
CentOS中文件夹基本操作命令 文件(夹)查看类命令 ls--显示指定目录下内容 说明:ls 显示结果以不同的颜色来区分文件类别.蓝色代表目录,灰色代表普通文件,绿色代表可执行文件,红色代表压缩文件 ...
- Android 项目中文件夹作用(res文件夹详细介绍)
1. src:存放所有的*.Java源程序. 2. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3. assets:可以存放项目一些较大的资源文件,例如: ...
- Java IO_001.File类--文件或文件夹相关操作
Java IO之File对象常用操作 File类:用于文件或文件夹或网址相关联的操作.可以关联或不关联文件(即关联不存在的文件).构造函数有: public File(String pathname) ...
- asp.net App_Code文件夹相关操作
最近用到了App_Code文件夹,想要实现动态编译文件的方式,即替换文件夹中的类文件从而达到实时修改代码的效果,类似web.config,网上查到的资料基本都是把文件夹中的类文件修改属性为" ...
- 关于Linux系统和Windows系统中文件夹的命名规范
Windows系统中. 1.在创建文件夹的时候不能以"."开头(但是文件以多个点开头并且还有其他合法字符的话就是合法的) 但是在windows系统中确实见过以一个点".& ...
- linux 下用renameTo方法修改java web项目中文件夹名称问题
经测试,在Linux环境中安装tomcat,然后启动其中的项目,在项目中使用java.io.File.renameTo(File dest)方法可行. 之前在本地运行代码可以修改,然后传到Linux服 ...
随机推荐
- java中的堆,栈和方法区(转)
来源:https://www.cnblogs.com/iliuyuet/p/5603618.html https://blog.csdn.net/lin542405822/article/detail ...
- [Swift]LeetCode69. x 的平方根 | Sqrt(x)
Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to be a no ...
- [Swift]LeetCode387. 字符串中的第一个唯一字符 | First Unique Character in a String
Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...
- [Swift]LeetCode824. 山羊拉丁文 | Goat Latin
A sentence S is given, composed of words separated by spaces. Each word consists of lowercase and up ...
- [Swift]LeetCode849. 到最近的人的最大距离 | Maximize Distance to Closest Person
In a row of seats, 1 represents a person sitting in that seat, and 0 represents that the seat is emp ...
- [Swift]LeetCode992. K 个不同整数的子数组 | Subarrays with K Different Integers
Given an array A of positive integers, call a (contiguous, not necessarily distinct) subarray of A g ...
- RabbitMQ学习笔记(六) RPC
什么RPC? 这一段是从度娘摘抄的. RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的 ...
- Android--拦截系统BroadcastReceiver
前言 上一篇博客,讲了BroadcastReceiver的一些基础内容,如何注册以及发送一个广播,那是基础,不清楚的可以先看看:Android--BroadcastReceiver.但是在实际开发当中 ...
- 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件
代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...
- 《深入java虚拟机》读书笔记之Java内存区域
前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,主要是方便之后进行复习. 运行时数据区域 Java虚拟 ...