首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法模拟Rails 4 Griddler创业板测试张贴到电子邮件处理器(post params问题)

无法模拟Rails 4 Griddler创业板测试张贴到电子邮件处理器(post params问题)
EN

Stack Overflow用户
提问于 2015-05-17 09:16:24
回答 2查看 405关注 0票数 1

我们的Griddler模型测试运行良好。例如,我们可以实例化lib/email_processor.rb及其进程。我们想要创建一个控制器测试,它可以对标准的/email_processor进行端到端的发布。

问题是,这些副词并没有通过邮政。我们的基本代码是:

代码语言:javascript
复制
  @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对象是零。

我们试过了

  • @postattr.to_json #给出了UTF-8中的无效字节序列
  • @postattr.to_s.to_json #可以工作,但没有一个params通过
  • 编码json字符串的uri

似乎没有什么东西被正确处理了。我们错过了什么?

EN

回答 2

Stack Overflow用户

发布于 2015-05-21 06:30:35

您的params似乎适合只使用griddler。但使用griddler-邮戳时不正确。Griddle邮戳适配器接受类似于您的答案的参数,然后griddler -邮戳前处理参数为griddler。在rails应用程序中传递传入电子邮件的正确格式如下: griddler-postmark

代码语言:javascript
复制
 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类,如下所示

代码语言:javascript
复制
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

希望这能帮到你:)

票数 1
EN

Stack Overflow用户

发布于 2015-05-19 22:25:08

没错,电子邮件的格式似乎不那么明显。往来地址实际上是列表。

代码语言:javascript
复制
  @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
                              }]}

希望它能帮到别人

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30285290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档