[apex][SF]ApexRESTのテストコードでのパラメータの渡し方

いくつくか方法があるような。
そのうち一番楽だったものを。

例えば以下のようなクラスを作ったとする。

1
2
3
4
5
6
7
8
9
10
@RestResource(urlMapping='/user/*')
global with sharing class userInfo_API {
  @HttpPost
  global static ResultData doPost(){
      RestRequest req = RestContext.request;
      String user_id = req.params.get('user_id');
      
      //何らかの処理
  }
}

この場合、user_idを渡すためには以下のように記述します。

1
2
3
4
5
6
7
8
9
@isTest
private class Test_userInfo_API {
  static testMethod void postTest(){
      RestRequest req = new RestRequest();
      RestContext.request = req;
      req.addParameter('user_id', 'ユーザーID');
      userInfo_API.doPost();
  }
}

RestRequestのパラメータにセットしておくだけでOKなよう。

余談。
APIのクラスのみを実行させようとしてもエラーが出る。

System.NullPointerException: Attempt to de-reference a null object

なのでテストメソッド内では最低限以下は必要。

1
2
3
RestRequest req = new RestRequest();
RestContext.request = req;
userInfo_API.doPost();
   このエントリーをはてなブックマークに追加