3
3

More than 5 years have passed since last update.

ユーザを作成するテストコードではUserNameに注意

Last updated at Posted at 2017-08-22

概要

  • test@example.com ユーザを作成するテストコードがありました
  • SandboxでのテストはPassしていました
  • 本番リリース時にテストコードがエラーになってしまい、リリースできませんでした(泣

再現用テストコード

@isTest
private class UserAddTest {
    @isTest static void useradd() {
        // get profile
        List<Profile> profiles = [SELECT Id FROM Profile WHERE Name IN ('Standard User', '標準ユーザ')];
        System.assert(profiles.size() > 0);

        // insert test user
        insert new User(
            UserName = 'test@exapmle.com',
            Email = 'test@example.com',
            LastName = 'test',
            Alias = 'test',
            TimeZoneSidKey = 'Asia/Tokyo',
            LocaleSidKey = 'ja_JP',
            EmailEncodingKey = 'ISO-2022-JP',
            LanguageLocaleKey = 'ja',
            ProfileId = profiles.get(0).Id
       );
    }
}

事象

  • Sandboxでテスト実行した場合はPass
  • 本番リリース時のテストで下記エラー(適当に改行しています)
System.DmlException: Insert failed. First exception on row 0;
first error: DUPLICATE_USERNAME, ユーザ名がすでに登録されています。<br>
この Salesforce 組織または別の Salesforce 組織に、ユーザ名がすでに存在します。
ユーザ名は、すべての Salesforce 組織で一意である必要があります。
解決するには、異なるユーザ名を使用します (ユーザのメールアドレスと一致する必要はありません)。 : [Username] 

解決方法

  • UserNameは、(他の企業が利用している組織も含めて)Salesforce組織全体で一意である必要がある、と理解しました
  • Sandboxでエラーにならないのは、インスタンスごとに一意ということなのでしょうか。
  • とにかく、テストコードであっても、UserNameは重複しないようにする必要があるようなので、自組織のドメイン等を指定するのが良さそうです。
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3