これは非常に基本的な問題ですが、問題を解決/把握できないようですので、新鮮な目が助けてくれることを願っています.
ユーザー名とパスワードを持つモデル User があります。ユーザーがパスワードを更新できるようにしたいので、以下に示すように update() メソッドを追加しました。
public static void update(User user) throws UserException {
User record = User.getById(user.id);
if (null == record) {
throw new UserException(BaseException.invalidRecordMessageException(User.class.getSimpleName()));
}
if (!StringUtils.equals(record.username, user.username)) {
throw new UserException(BaseException.unmodifiableFieldMessageException(User.class.getSimpleName(), "username"));
}
validatePassword(user.password);
saveUser(user);
}
そして、ここに私のsaveUser()があります:
private static void saveUser(User user) {
user.password = encryptPassword(user.password);
user.save();
System.out.println("n: " + user.id);
System.out.println("n: " + user.username);
System.out.println("n: " + user.password);
User r = User.getById(user.id);
System.out.println("r: " + r.id);
System.out.println("r: " + r.username);
System.out.println("r: " + r.password);
}
機能が完全に動作していることを確認するテストを追加しました。
@Test
public void testUpdateUserPasswordWithValidPasswordShouldUpdateRecord() {
try {
User dummy = new User(DEFAULT_USERNAME, DEFAULT_RAW_PASSWORD);
User.create(dummy);
assertNotNull(dummy.id);
User record = User.getById(dummy.id);
assertEquals(DEFAULT_USERNAME, record.username);
assertEquals(DEFAULT_RAW_PASSWORD, record.password);
dummy.password = DEFAULT_RAW_PASSWORD + "_extra";
User.update(dummy);
User updatedRecord = User.getById(dummy.id);
assertEquals(dummy.username, updatedRecord.username);
assertEquals(dummy.password, updatedRecord.password);
} catch (UserException ue) {
fail("Test should not throw exception.");
}
}
ただし、レコードが更新されていないように見えるため、テストは失敗しています。
Test UserTest.testUpdateUserPasswordWithValidPasswordShouldUpdateRecord failed: expected:<$uP3rsecretpassword[_extra]> but was:<$uP3rsecretpassword[]>
DEFAULT_PASSWORD = $uP3rsecretパスワード
以下は、すべての System.out.println() 呼び出しの出力です。
--- 初期作成 ---
n: 1
n:モー
n: $uP3rsecretpassword
r:1
r:モー
r: $uP3rsecretpassword
- - アップデート - -
n:1
n:モー
n: $uP3rsecretpassword_extra
r:1
r:モー
r: $uP3rsecretpassword
助けてくれてありがとう。