この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

runAs メソッドの使用

一般に、Apex コードはすべてシステムモードで実行され、現在のユーザの権限やレコード共有は考慮されません。ユーザのレコード共有を強制実行するために、システムメソッド runAs を使用して、コンテキストユーザを既存のユーザまたは新規ユーザに変更するテストメソッドを作成できます。runAs メソッドは、レコード共有を適用します。新規のコンテキストユーザには、ユーザ権限と項目レベル権限が適用されます。詳細は、「オブジェクト権限と項目権限の適用」を参照してください。

ユーザの共有権限は、テストクラスの共有モードにかかわらず runAs ブロック内で適用されます。ユーザ定義メソッドが runAs ブロックでコールされた場合、適用される共有モードは、そのメソッドが定義されているクラスの共有モードになります。

メモ

テストメソッドのみで runAs を使用できます。元のシステムコンテキストは、すべての runAs テストメソッドが完了した後で再開されます。

runAs メソッドは、ユーザライセンスの制限を無視します。組織に追加ユーザライセンスがない場合でも、runAs でユーザを作成できます。

runAs の各コールは、プロセスで発行される DML ステートメントの合計数に含まれます。

メモ

次の例では、新しいテストユーザが作成され、コードがそのユーザとして、ユーザのレコード共有アクセス権を使用して実行されます。

複数の runAs メソッドをネストできます。次に例を示します。

runAs のその他の使用

DML 操作を runAs ブロックで囲むことで、runAs メソッドを使用して混合 DML 操作をテストで実行することもできます。この方法では、設定オブジェクトを他の sObject と一緒に挿入または更新しようとすると返される混合 DML エラーを回避できます。「DML 操作で同時に使用できない sObject」を参照してください。

パッケージバージョンを引数として取る、runAs メソッド (runAs(System.Version)) の別のオーバーロードがあります。このメソッドによって、管理パッケージの特定のバージョンのコードが使用されます。runAs メソッドの使用とパッケージバージョンコンテキストの指定についての詳細は、「パッケージバージョンの動作のテスト」を参照してください。