Art*_*cki 24
首先看一下send_data方法的来源http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_data
根据这一点,send_data只需将所有内容render :text => '...'与其他选项放在一起.
我想你可以这样做:
response.body.should eql data
response.header['Content-Type'].should eql 'image/png'
Run Code Online (Sandbox Code Playgroud)
您不应该测试send_data自身的行为,主要是因为Rails自己的测试已经涵盖了这一点.此外,它将使您的测试运行缓慢(最终).你应该做什么(从我的角度来看)是存根send_data方法,如:
controller.expects(:send_data).with("foo").returns(:success)
希望能帮助到你.
您可以通过检查Content-Transfer-Encodingheader的值来间接测试它。
期望(控制器。头[“内容传输编码”])。到eq(“二进制”)
或者
controller.headers["Content-Transfer-Encoding"].should eq("binary")
当我读到他的问题时,我认为他的意思是,他如何确保 send_data 发送了字符串/无论他要求什么。与其说是为了测试它的发送,不如说是为了确保他发送的方法不是空白,让他安心。正如你所做的那样,嘲笑并不能真正给他带来那样的结果。
也许您可以确保您的字符串不为空或类似的内容。这样,您就不会测试 send_data,但无论 send_data 得到什么,都是您想要的样子。
就我而言(是什么让我想到这个问题)是
#just use this to make sure it looks like you want it to while you are writing your
#tests. I remove it after. make sure it's an instance variable @csv_string in my case.
puts assigns(:csv_string)
refute_nil assigns(:csv_string) #does the actual work. delete the puts line when done.
Run Code Online (Sandbox Code Playgroud)
一些狂热的人使用 ruby 调试器,但你的里程会有所不同。
| 归档时间: |
|
| 查看次数: |
11397 次 |
| 最近记录: |