2010-11-04 5 views
3

Я пытаюсь интегрировать тест класса, использующего Mail Plugin. Когда я запускаю свой тест (grails test-app -integration EmailerIntegration), я получаю сообщение об ошибке:Grails: тестирование интеграции почтового плагина

Не удалось найти раскладки макетов почты/_email. Это в плагине? Если это так, вы должны передать имя плагина в переменной [plugin]

Есть ли код инициализации, который отсутствует в методе setUp моего тестового примера?

Вот код теста:

package company 

import grails.test.* 

class EmailerIntegrationTests extends GrailsUnitTestCase { 
    protected void setUp() { 
     super.setUp() 
    } 

    protected void tearDown() { 
     super.tearDown() 
    } 

    void testSomething() { 
     User owner = new User() 
     owner.displayName = "Bob" 
     owner.email = "[email protected]" 

     Emailer emailer = new Emailer() 
     emailer.sendReadyEmail(owner) 
    } 
} 

Вот код для класса испытывается:

package company 

import org.apache.log4j.Logger; 
import org.codehaus.groovy.grails.commons.ApplicationHolder; 
import org.springframework.context.ApplicationContext; 

class Emailer { 
    private Logger log = Logger.getLogger(this.getClass()); 
    ApplicationContext ctx = (ApplicationContext)ApplicationHolder.getApplication().getMainContext(); 
    def mailService = ctx.getBean("mailService"); 

    def sendReadyEmail = { owner -> 
      mailService.sendMail { 
        to owner.email 
        subject "Ready to go" 
        body(view:"layouts/_email", model:[ownerInstance:owner]) 
      } 
    } 
} 

Спасибо,

Эверетт

ответ

2

После просмотра собственных тестов плагина для почтового плагина на https://github.com/gpc/grails-mail/blob/master/test/integration/org/grails/mail/MailServiceTests.groovy я понял, что пути в значениях для параметра вида начинаются с символа '/'. Я изменил свой метод на

def sendReadyEmail = { owner -> 
     mailService.sendMail { 
       to owner.email 
       subject "Ready to go" 
       body(view:"/layouts/_email", model:[ownerInstance:owner]) 
     } 

И теперь он работает в интеграционных тестах и ​​обычном выполнении программы.

0

body параметр в методе sendMail(..) представляет собой карту с ключами view, model, и plugin. Требуется значение для plugin и указывает на прочее, поддерживающее, плагин, например, имя «подтверждение по электронной почте» для соответствующего плагина.

Ваше сообщение об ошибке отправлено в org.grails.mail.MailMessageBuilder.renderMailView(Object, Object, Object). Этот класс можно найти в папке проекта Grails.

К сожалению, я не нашел слишком много документации по плагину Mail. Таким образом, на данный момент я не могу легко рассказать о том, как использовать вышеупомянутые поддерживающие плагины. Однако, если вы не можете продвинуться вперед, я могу попытаться продолжить расследование. Спасибо

+0

Не повезло. Мне не удалось найти значение, которое даст ключ плагина, который запустил тестовую работу. –

+0

Как уже упоминалось, одним из возможных ключей является «подтверждение по электронной почте». - А вы, тем временем, находили какую-либо соответствующую документацию по этому поводу, или у вас есть какие-либо другие выводы? - Нет такой односторонней вещи, как «пожалуйста, решите это для меня». - Мне было бы интересно исследовать дальше, если вы приложите усилия, но я не занимаюсь домашними заданиями других. - Мы оба можем прийти к выводу, что документации слишком мало, что не позволяет нам использовать эти плагины. - Спасибо – robbbert

+0

Я должен был быть более конкретным, я попробовал ряд значений для ключа плагина, такого как «подтверждение по электронной почте», «электронная почта» и «весна-события» (другой плагин, который я использую). Каждая попытка встречалась с исключением. Однако, найдя какое-то дополнительное время, чтобы углубиться в это, я нашел ответ. –

Смежные вопросы