設問
テストメソッドを作成する場合、システムメソッド runAs() によってどの機能が検証されますか?
選択肢
A. ユーザーのレコード共有の強制。
B. ユーザー権限の強制。
C. ユーザーのフィールドレベルのセキュリティの強制。
D. ユーザーのパブリックグループ割り当ての強制。
解答
A. ユーザーのレコード共有の強制。
解説
A. ユーザーのレコード共有の強制。
正解です。
runAs()を使うと、そのユーザーのレコード共有ルール(OWD設定や手動共有)に基づいて、どのレコードにアクセスできるかをシミュレートできます。たとえば、プライベート設定の取引先に対して、共有されているユーザーだけがアクセスできるかどうかをrunAsでテスト可能です。これにより、実運用に近いアクセスシナリオのテストが実現します。
B. ユーザー権限の強制。
不正解です。
runAs()では、ユーザーが持つオブジェクト権限(例:作成・削除・編集)には影響しません。つまり、対象ユーザーが「取引先作成権限」を持っていなくても、runAs内で取引先を作成できてしまいます。権限テストには別途プロファイル検証が必要です。
C. ユーザーのフィールドレベルのセキュリティの強制。
不正解です。
runAs()はフィールドレベルセキュリティ(FLS)チェックを行いません。たとえば、対象ユーザーが「給与情報」フィールドを見られない場合でも、runAs中に給与フィールドを操作することができます。FLSテストには手動でisAccessible/isUpdateableチェックを実装する必要があります。
D. ユーザーのパブリックグループ割り当ての強制。
不正解です。
パブリックグループのメンバーシップ(所属)は、レコード共有時の共有先設定には影響しますが、runAs自体がグループ割り当てを制御するわけではありません。グループ割り当てはあくまで共有設定側の問題です。
第107問
こちらをクリック