ConnectApi コードのテスト
Connect in Apex メソッドはシステムモードでは実行されず、現在のユーザー (コンテキストユーザーとも呼ばれる) のコンテキストで実行されます。メソッドは、コンテキストユーザーがアクセス権を持つものすべてにアクセスできます。Connect in Apex は、runAs システムメソッドをサポートしていません。
大部分の Connect in Apex メソッドには、実際の組織データへのアクセス権が必要であり、@IsTest(SeeAllData=true) のマークが付けられたテストメソッドで使用されなければ失敗します。
ただし、getFeedElementsFromFeed などの一部の Connect in Apex メソッドでは、テストで組織データにアクセスすることが認められず、出力がテストコンテキストで返されるように登録する特別なテストメソッドと一緒に使用する必要があります。メソッドが setTest メソッドを必要とする場合は、要件がそのメソッドの「Usage」セクションに記述されます。
テストメソッド名は、通常のメソッド名の先頭に setTest プレフィックスが付けられます。テストメソッドの署名 (パラメーターの組み合わせ) は、通常のメソッドの署名と一致します。たとえば、通常のメソッドに 3 つのオーバーロードがある場合、テストメソッドには 3 つのオーバーロードがあります。
Connect in Apex テストメソッドの使用方法は、Apex での Web サービスのテスト方法と類似しています。まず、メソッドで返すデータを作成します。データを作成するには、出力オブジェクトを作成し、それらのプロパティを設定します。すべての非抽象出力クラスに非引数コンストラクターを使用して、オブジェクトを作成できます。
データを作成したら、テストメソッドをコールして、データを登録します。テストする通常のメソッドと同じ署名を持つテストメソッドをコールします。
テストデータを登録したら、通常のメソッドを実行します。通常のメソッドを実行すると、登録済みデータが返されます。
1global class NewsFeedClass {
2 global static Integer getNewsFeedCount() {
3 ConnectApi.FeedElementPage elements =
4 ConnectApi.ChatterFeeds.getFeedElementsFromFeed(null,
5 ConnectApi.FeedType.News, 'me');
6 return elements.elements.size();
7 }
8}1@isTest
2private class NewsFeedClassTest {
3 @IsTest
4 static void doTest() {
5 // Build a simple feed item
6 ConnectApi.FeedElementPage testPage = new ConnectApi.FeedElementPage();
7 List<ConnectApi.FeedItem> testItemList = new List<ConnectApi.FeedItem>();
8 testItemList.add(new ConnectApi.FeedItem());
9 testItemList.add(new ConnectApi.FeedItem());
10 testPage.elements = testItemList;
11
12 // Set the test data
13 ConnectApi.ChatterFeeds.setTestGetFeedElementsFromFeed(null,
14 ConnectApi.FeedType.News, 'me', testPage);
15
16 // The method returns the test page, which we know has two items in it.
17 Test.startTest();
18 System.assertEquals(2, NewsFeedClass.getNewsFeedCount());
19 Test.stopTest();
20 }
21}