我正在尝试集成测试使用Mail Plugin的类。当我运行我的测试(grails test-app -integration EmailerIntegration)时,我收到错误:
无法找到邮件正文布局/ _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 = "bob@yahoo.com"
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])
}
}
}
谢谢,
埃弗雷特答案 0 :(得分:2)
在https://github.com/gpc/grails-mail/blob/master/test/integration/org/grails/mail/MailServiceTests.groovy查看插件作者自己对邮件插件的测试之后,我意识到view参数值的路径都以'/'开头。我将方法改为
def sendReadyEmail = { owner ->
mailService.sendMail {
to owner.email
subject "Ready to go"
body( view:"/layouts/_email", model:[ownerInstance:owner])
}
现在它适用于集成测试和正常的程序执行。
答案 1 :(得分:0)
body
方法中的sendMail(..)
参数是包含view
,model
和plugin
键的地图。需要plugin
的值,并指向某些其他支持插件,例如,相应插件的名称“email-confirmation”。
org.grails.mail.MailMessageBuilder.renderMailView(Object, Object, Object)
中会抛出您的错误消息。您可以在Grails项目的插件文件夹中找到此类。
不幸的是,我没有在Mail插件上找到太多文档。因此,目前,我不能轻易讲述如何使用上述支持插件。但是,如果你无法取得进展,我可能会尝试进一步调查。感谢