Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用rSpec测试Rails块帮助程序_Ruby On Rails_Rspec_Helper - Fatal编程技术网

Ruby on rails 如何使用rSpec测试Rails块帮助程序

Ruby on rails 如何使用rSpec测试Rails块帮助程序,ruby-on-rails,rspec,helper,Ruby On Rails,Rspec,Helper,在我的视图中,我使用一个将任意HTML作为块的帮助器: <% some_block_helper do %> Some arbitrary HTML and ERB variables here. More HTML here. <% end %> 这里有一些任意的HTML和ERB变量。 更多的HTML在这里。 我的助手在将传递的HTML块呈现回视图(标记和其他格式)之前,会对其执行一系列操作。我想知道在rSpec中测试helper调用结果的最干净的方法是什

在我的视图中,我使用一个将任意HTML作为块的帮助器:

<% some_block_helper do %>
  Some arbitrary HTML and ERB variables here.
  More HTML here.
<% end %>

这里有一些任意的HTML和ERB变量。
更多的HTML在这里。
我的助手在将传递的HTML块呈现回视图(标记和其他格式)之前,会对其执行一系列操作。我想知道在rSpec中测试helper调用结果的最干净的方法是什么,如果有的话。我发现了一些与ERB的私有方法有关的例子,但这似乎有点脆弱,难以阅读

  • 对于功能测试,请编写一份正常测试报告并测试结果
  • 要进行单元测试,请直接向其传递任意html输入字符串

  • 如果我还遗漏了任何其他困难,请发表评论?

    为了补充詹姆斯所说的,我认为类似的方法应该可以很好地工作:

    describe SomeHelper do
      it 'should do something' do
        helper.some_block_helper { the_block_code }.should XXXX
      end
    end
    

    下面是另一个例子,它扩展了Cameron的答案

    describe SomeHelper do
      it 'should do something' do
        content = lambda { "blah" }                                
        result  = helper.some_block_helper(&content)
    
        result.should include("blah")
        result.should XXX
      end
    end
    

    由于测试是在Ruby中进行的,而不是在模板中,因此不清楚如何在
    do
    end
    之间复制将HTML置于ERB标记之外的行为。