我正在 salesforce.com 平台上开发 Rest Web 服务。我写了它,它运行正常,并在我调用它时给出准确的响应。问题是如何测试
@RestResource(urlMapping='/feedpost/*')
global class Feedpost9
{
@HttpPut
global static User updateCase() {
RestRequest req=RestContext.request;
User user=[SELECT id from User where email=:req.headers.get('email') LIMIT 1];
return user;
}
}
现在我的任务是测试这个 REST web 服务方法
updateCase
.为了测试 POST 请求方法,我必须在方法调用中设置参数,但在 PUT 方法的情况下 - 如何设置 RestContext.request
在测试课上?
最佳答案
在单元测试中必须解决两个问题:
这是设置方法所需的请求对象的基本技术
global class Feedpost9 {
// your methods here...
static testMethod void testRest() {
// set up the request object
System.RestContext.request = new RestRequest();
RestContext.request.requestURI = '/feedpost/whatever';
RestContext.request.addHeader('email', 'blahblah@some.org');
// Invoke the method directly
Feedpost9.updateCase();
}
}
您可能遇到的另一个问题是,在 Salesforce v24 及更高版本中,默认情况下,单元测试无权访问您的数据。那是因为单元测试在一种沙箱中运行,它没有您的数据,但包含您的元数据(RecordTypes 等)。因此,有两种技术可以将数据用于测试:
@isTest(SeeAllData=true)
您的方法上的注释。这将使测试方法可以访问您的数据。 我更喜欢使用后一种方法,但有时我会作弊...
关于salesforce - 在 salesforce.com 中测试 Rest Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031179/