私はunit/integration/functional testingの初心者です。grailsプロジェクトの統合テストのSpock検証に関する問題
私は、起動されたアプリケーションとgrailsコンソールの両方で動作し、テストの実行中ではない私のドメインクラス用のカスタムバリデータを持っています。
2つのドメインクラスに対して2つの同様のバリデータがありますが、そのうちの1つは通過し、もう1つは受け入れません。
この検証の主な考え方は、ユーザーが2つの電子メールを持っている可能性があるということです。 1つはログイン用で、もう1つはプロフィールで表示するためのものです。ユーザーはプロファイルに表示される別のユーザーの電子メール(およびその反対)を選択できません。
(ユーザドメインクラスのメールに適用される)対応するテストに合格するいずれか
validator: {email, user ->
UserProfile userProfile = UserProfile.findByProfileEmail(email)
if (!userProfile) {
true
} else if (userProfile?.user == user) {
true
} else {
false
}
}
もう一つは同じであるが、ユーザは、(のUserProfileドメインクラスにprofileEmailに適用される)プロファイルメールをチェックします。
validator: {profileEmail, userProfile ->
User user = User.findByEmail(profileEmail)
if (!user) {
true
} else if (user?.userProfile == userProfile){
true
} else {
false
}
}
試験からのサンプルコード:
def setup() {
userService.createUser(email: EMAIL, password: PASSWORD, firstName: FIRST_NAME)
springSecurityService.reauthenticate(EMAIL, PASSWORD)
}
void "Attempt to set non-unique profileEmail"() {
given: "Create additional user"
userService.createUser(email: EMAIL_ADDITIONAL, password: PASSWORD, firstName: FIRST_NAME)
when: "Set user's profile email the same as additional user's email"
userProfileService.updateUserProfile([profileEmail: EMAIL_ADDITIONAL])
then: "Check that non-unique profileEmail was not saved"
User.findByEmail(EMAIL).userProfile.profileEmail != EMAIL_ADDITIONAL
}
どういうわけか私のカスタムバリデーターは、コンソールと実行中のアプリケーションで動作しますが、統合テストでは機能しません。
サービスやドメインクラスのコードサンプルが必要な場合がありますか? github repoへのリンクは役に立ちますか?
あなたはそれらを読んでいるものを助けるために小さなものにあなたの質問を破る必要があります。 – kazanaki
github repoはあなたがそれを公開しているなら確かに助けになるでしょう... – kazanaki
@kazanaki、アドバイスありがとうございます。質問を調整しましたが、とにかく私は答えを発見しました。 –