В настоящее время пытается проверить Grails служба (Опыт работы с Геба функционального тестирования)Grails блок тестирования услуга Спока насмешливый функциональность
Пытаюсь издеваться необходимых требуемых данных, что услуга будет необходимо (например, пользователя и т. д.) ... независимо от того, как я, кажется, объявляю/инициализирую интересующие вас области, все отображаются как NULL во всех моих методах тестирования
Я пытаюсь установить эту требуемую информацию один раз, чтобы она могла повторно использовать методы испытаний.
@TestFor(ReminderService)
@Mock([Reminder, User, Subscriptions, Organisation, UserOrganisation, OrganisationRole, Ref, Role, Title])
class ReminderServiceTests extends Specification {
@Shared user, org, userOrg, roleUser, sub, orgRole, ti, refVals, reminder
def mailService
def setup() {
def refSubStatus = new Ref(value: 'Current').save()
def refSubPublic = new Ref(value: 'No').save()
def refSubType = new Ref(value: 'Subscription Taken').save()
def refRemUnit = new Ref(value: 'Month').save()
def refOrgRole = new Ref(value: 'Subscriber').save()
def refRemMethod = new Ref(value: 'email').save()
def refRemTrigger = new Ref(value: 'Subscription Manual Renewal Date').save()
reminder = new Reminder(user: user, active: true, amount: 1, unit:refRemUnit, reminderMethod:refRemMethod, trigger: refRemTrigger, lastRan:null).save()
refVals = [refSubStatus,refSubPublic, refSubType, refRemUnit, refOrgRole, refRemMethod, refRemTrigger]
roleUser = new Role(authority: 'BASIC_USER', roleType:'global').save()
ti = new Title(title: "A random title....", impId: UUID.randomUUID().toString()).save()
sub = new Subscription(name:"A random subscription name",
status:refSubStatus,
identifier:UUID.randomUUID().toString(),
impId:UUID.randomUUID().toString(),
startDate:new LocalDate().minusYears(1).toDate(),
endDate: new LocalDate().plusMonths(1).toDate(),
isPublic: refSubPublic,
type: refSubType,
renewal: new LocalDate().minusMonths(3).toDate()).save()
org = new Organisation(name: "new org", impId: UUID.randomUUID().toString()).save()
orgRole = new OrganisationRole(sub: sub, roleType: refOrgRole, org: org).save()
user = new User(username: 'j_doe', firstname: "John", lastname: "Doe", email: '[email protected]', defaultDash: org).save()
userOrg = new UserOrganisation(org: org, user: user, formalRole: roleUser, status: 1).save()
mailService = new MailService()
// mockDomain(Ref, refdataValues)
// mockDomain(Title, ti)
// mockDomain(OrganisationRole, orgRole)
// mockDomain(Organisation, org)
// mockDomain(User, user)
// mockDomain(UserOrganisation, userOrg)
// mockDomain(Reminder, reminder)
}
def "Getting subscriptions for a user"() {
when:
def subscriptions = service.getAuthorisedSubsciptionsByUser(user)
then:
subscriptions != null
subscriptions.size() > 0
}
Все равно нулю, я попытался с помощью mockDomain (см закомментирована раздел в setup()
, в том числе с использованием setupSpec()
что-то не совсем верно)
'компиляция ошибок компиляция [unit] тестов: запуск не удался: из этого могут быть доступны только @Shared и статические поля ... Я смешиваю два разных стиля тестирования, я изменил его на использование' setupSpec() '? Если я оставлю его как 'setup()' без совместного использования, но все равно проблема, как в OP ... Такая запутанная тема, спасибо за помощь – RST
Если вы используете свои значения в setupSpec или в тех местах, где вам придется использовать значения @Shared. Однако я обнаружил, что часто не стоит головной боли, особенно при использовании классов домена в grails. Я просто создаю отдельное приспособление для каждой спецификации и реорганизую код прибора. Это почти так же сухо, хотя и не так эффективно. – loteq