我们的Griddler模型测试运行良好。例如,我们可以实例化lib/email_processor.rb及其进程。我们想要创建一个控制器测试,它可以对标准的/email_processor进行端到端的发布。
问题是,这些副词并没有通过邮政。我们的基本代码是:
@postattr= {to: "hello@hello.com", subject: "a subject", attachments: [
ActionDispatch::Http::UploadedFile.new({
filename: 'example_virgin_onetransaction.pdf',
type: 'application/pdf',
tempfile: File.new('testfiles/examplefile.pdf")})
]}
post :create, @postattr
expect(response).to be_success它的工作方式是将文章发送到正确的路由,并得到处理,除非email.attachments对象是零。
我们试过了
似乎没有什么东西被正确处理了。我们错过了什么?
发布于 2015-05-21 06:30:35
您的params似乎适合只使用griddler。但使用griddler-邮戳时不正确。Griddle邮戳适配器接受类似于您的答案的参数,然后griddler -邮戳前处理参数为griddler。在rails应用程序中传递传入电子邮件的正确格式如下: griddler-postmark
attributes = {Subject: "a subject", TextBody: "Hello!",
ToFull: [{Email: 'to_email@email.com', Name: 'to email'}],
FromFull: {Email: "from_email@email.com", Name: "from email"},
Attachments: [{Name: 'filename.pdf',
Content: Base64.encode64(fixture_file.read),
ContentType: 'application/pdf',
ContentLength: fixture_file.size
}]}
post :create, attributes使用附件处理邮件时,您可能会遇到一些问题。因此,我添加了一个示例EmailProcessor类,如下所示
class EmailProcessor
def initialize(email)
@email = email
end
def process
if @email.attachments.present?
attachment = @email.attachments.first
file = File.new(attachment.original_filename, 'wb')
file.write attachment.read
file.flush
attached_document = AttachedDocument.new(paper: file)
attached_document.save!
end
end
end希望这能帮到你:)
发布于 2015-05-19 22:25:08
没错,电子邮件的格式似乎不那么明显。往来地址实际上是列表。
@post_attr = {Subject: "a subject", TextBody: "Hello!",
ToFull: [{Email: 'to_email@email.com', Name: 'to email'}],
FromFull: {Email: "from_email@email.com", Name: "from email"},
Attachments: [{Name: 'filename.pdf',
Content: Base64.encode64(fixture_file.read),
ContentType: 'application/pdf',
ContentLength: fixture_file.size
}]}希望它能帮到别人
https://stackoverflow.com/questions/30285290
复制相似问题