我正在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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的任务是测试这个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();
}
}
Run Code Online (Sandbox Code Playgroud)
您可能遇到的另一个问题是,在Salesforce v24及更高版本的单元测试中,默认情况下无法访问您的数据.这是因为单元测试在一种沙盒中运行,沙箱中没有任何数据,但确实包含元数据(RecordTypes等).因此,有两种技术可以为测试提供数据:
@isTest(SeeAllData=true)在方法上使用注释.这将使测试方法可以访问您的数据.我更喜欢使用后来的方法,但有时我作弊...
| 归档时间: |
|
| 查看次数: |
8370 次 |
| 最近记录: |