小编Mat*_*ker的帖子

如何在帮助程序规范中访问cookie?

在测试我的帮助方法时,我无法弄清楚如何测试已设置cookie.

假设辅助方法:

def my_helper(k,v)
    cookies[k] = v
end
Run Code Online (Sandbox Code Playgroud)

测试:

it 'should set cookies' do  
  helper.my_helper("foo", "bar")
  helper.cookies["foo"].should == "bar" #nil
  helper.response.cookies["foo"].should == "bar" #nil
end
Run Code Online (Sandbox Code Playgroud)

有人知道怎么做吗?

rspec ruby-on-rails ruby-on-rails-3

5
推荐指数
1
解决办法
1676
查看次数

为什么文件读取因STDIO或File.open而异?

根据我是从中拉出:stdio还是打开文件,读取文件似乎表现不同.为什么?我希望能够从STDIN读取二进制文件或打开文件(File.open)并使用相同的代码来提取字节.

简而言之:

  • 为什么我在下面概述的行为在stdio和文件之间有所不同?
  • 我怎样才能实现目标?

测试用例

作为一个简单的测试用例,我有一个包含三个字节的二进制文件:

06 8C 7D
Run Code Online (Sandbox Code Playgroud)

我想要的结果是,从任何一个源读取此文件应该产生以下形式的二进制文件:

<<6, 140, 125>>
Run Code Online (Sandbox Code Playgroud)

但是,根据我是从STDIO读取还是打开文件,事情似乎有所不同.

以下是一系列演示行为的测试用例.

例1

stdio的IO.binread产生此错误

IO.inspect IO.binread(:stdio, 3)
$ elixir repro.exs < repro.bin
{:error, :collect_chars}
Run Code Online (Sandbox Code Playgroud)

例2

stdio的IO.read产生期望的结果

IO.inspect IO.read(:stdio, 3)
$ elixir repro.exs < repro.bin
<<6, 140, 125>>
Run Code Online (Sandbox Code Playgroud)

例3

IO.binread文件产生所需的结果

{:ok, file} = File.open("repro.bin")
IO.inspect IO.binread(file, 3)
$ elixir repro.exs
<<6, 140, 125>>
Run Code Online (Sandbox Code Playgroud)

例4

文件的IO.read增加了一个额外的字节(194),我不明白 - 我最好的猜测是这与utf8有关吗?

{:ok, file} = File.open("repro.bin")
IO.inspect IO.read(file, 3)
$ elixir repro.exs
<<6, 194, 140, 125>>
Run Code Online (Sandbox Code Playgroud)

我想要的是什么:

一种接受文件 …

elixir

4
推荐指数
1
解决办法
308
查看次数

标签 统计

elixir ×1

rspec ×1

ruby-on-rails ×1

ruby-on-rails-3 ×1