No Results
Search Tips:
- Please consider misspellings
- Try different search keywords
SOSL クエリの単体テストへの追加
テストメソッドが必ず予測されたとおりに動作するように、Apex テストメソッドに追加される Salesforce オブジェクト検索言語 (SOSL) クエリは、テストメソッドが実行された場合に検索結果の空のセットを返します。クエリが結果の空のリストを返さないようにする場合は、Test.setFixedSearchResults システムメソッドを使用して、検索で返されるレコード ID のリストを定義できます。テストメソッドの後半で実行される SOSL クエリは、Test.setFixedSearchResults メソッドで指定されたレコード ID のリストを返します。また、テストメソッドは Test.setFixedSearchResults を複数回コールして、さまざまな SOSL クエリのさまざまな結果セットを定義できます。テストメソッドで Test.setFixedSearchResults メソッドをコールしない場合、またはレコード ID のリストを指定しないでこのメソッドをコールする場合、テストメソッドの後半で実行される SOSL クエリは、結果の空のリストを返します。
Test.setFixedSearchResults メソッドで指定されたレコード ID のリストは、WHERE 句または LIMIT 句が適用されない場合に通常 SOSL クエリで返される結果を置き換えます。これらの句が SOSL クエリに存在する場合は、固定された検索結果のリストに適用されます。次に例を示します。
1swfobject.registerObject("clippy.codeblock-0", "9");@isTest
2private class SoslFixedResultsTest1 {
3
4 public static testMethod void testSoslFixedResults() {
5 Id [] fixedSearchResults= new Id[1];
6 fixedSearchResults[0] = '001x0000003G89h';
7 Test.setFixedSearchResults(fixedSearchResults);
8 List<List<SObject>> searchList = [FIND 'test'
9 IN ALL FIELDS RETURNING
10 Account(id, name WHERE name = 'test' LIMIT 1)];
11 }
12}ID が 001x0000003G89h である取引先レコードが FIND 句のクエリ文字列 ('test') に一致しない場合がありますが、レコードは SOSL ステートメントの RETURNING 句に渡されます。ID が 001x0000003G89h のレコードが WHERE 句の検索条件に一致する場合、レコードが返されます。WHERE 句に一致しない場合、レコードは返されません。