2016-04-26 3 views
3

は私がビューの仕様が一貫して動作しないのはなぜですか?

Failure/Error: assert_select "div.fileinput-new.thumbnail" 
ArgumentError: 
    wrong number of arguments (3 for 1) 

[OK]をビューのスペックから、いくつかの奇妙な結果を得ているので、(私は参照3つの引数が何であるかわからないが)、これは自明です。

しかし、スイートをもう一度実行すると、エラーが発生する可能性があります。そして次の5つのエラーは、上記と同じタイプですが、異なるDOM要素を参照しています。

ビュー仕様の矛盾したカバレッジのこの種を引き起こす可能性がどのようなこれらの仕様

describe do 
    build :object/create :object 
    @object = assign(:object, object) 
    it 'displays the DOM elements' do 
    render 
    asset_select #DOM_elements 
    end 
end 

のいずれかで派手なものは何もありませんか?

これは決定的な答えではありません

Failure/Error: assert_select "div.fileinput-new.thumbnail" 

    ArgumentError: 
     wrong number of arguments (3 for 1) 
    # /Users/me/.rvm/gems/[email protected]/gems/actionview-4.2.6/lib/action_view/helpers/text_helper.rb:52:in `concat' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/searchable.rb:165:in `evaluate' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/searchable.rb:165:in `block in xpath' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/searchable.rb:156:in `map' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/searchable.rb:156:in `xpath' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/searchable.rb:193:in `css_internal' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:76:in `block in css' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:187:in `block in each' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:186:in `upto' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:186:in `each' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:75:in `inject' 
    # /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb:75:in `css' 
    # /Users/me/.rvm/gems/[email protected]/gems/rails-dom-testing-1.0.7/lib/rails/dom/testing/assertions/selector_assertions/html_selector.rb:20:in `select' 
    # /Users/me/.rvm/gems/[email protected]/gems/rails-dom-testing-1.0.7/lib/rails/dom/testing/assertions/selector_assertions.rb:174:in `assert_select' 
    # ./spec/views/users/settings/profile.html.erb_spec.rb:24:in `block (4 levels) in <top (required)>' 
    # /Users/me/.rvm/gems/[email protected]/gems/rails-dom-testing-1.0.7/lib/rails/dom/testing/assertions/selector_assertions.rb:295:in `nest_selection' 
    # /Users/me/.rvm/gems/[email protected]/gems/rails-dom-testing-1.0.7/lib/rails/dom/testing/assertions/selector_assertions.rb:177:in `block in assert_select' 
    # /Users/me/.rvm/gems/[email protected]/gems/rails-dom-testing-1.0.7/lib/rails/dom/testing/assertions/selector_assertions.rb:174:in `tap' 
    # /Users/me/.rvm/gems/[email protected]/gems/rails-dom-testing-1.0.7/lib/rails/dom/testing/assertions/selector_assertions.rb:174:in `assert_select' 
    # ./spec/views/users/settings/profile.html.erb_spec.rb:22:in `block (3 levels) in <top (required)>' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:236:in `instance_exec' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:236:in `block in run' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:478:in `block in with_around_and_singleton_context_hooks' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:435:in `block in with_around_example_hooks' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/hooks.rb:478:in `block in run' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/hooks.rb:618:in `block in run_around_example_hooks_for' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:320:in `call' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:320:in `call' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-rails-3.4.2/lib/rspec/rails/adapters.rb:127:in `block (2 levels) in <module:MinitestLifecycleAdapter>' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:425:in `instance_exec' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:425:in `instance_exec' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/hooks.rb:389:in `execute_with' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/hooks.rb:620:in `block (2 levels) in run_around_example_hooks_for' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:320:in `call' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:320:in `call' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/hooks.rb:621:in `run_around_example_hooks_for' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/hooks.rb:478:in `run' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:435:in `with_around_example_hooks' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:478:in `with_around_and_singleton_context_hooks' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example.rb:233:in `run' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example_group.rb:581:in `block in run_examples' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example_group.rb:577:in `map' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example_group.rb:577:in `run_examples' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example_group.rb:543:in `run' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example_group.rb:544:in `block in run' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example_group.rb:544:in `map' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/example_group.rb:544:in `run' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/runner.rb:119:in `block (3 levels) in run_specs' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/runner.rb:119:in `map' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/runner.rb:119:in `block (2 levels) in run_specs' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/configuration.rb:1680:in `with_suite_hooks' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/runner.rb:118:in `block in run_specs' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/reporter.rb:77:in `report' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/runner.rb:117:in `run_specs' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/runner.rb:93:in `run' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/runner.rb:78:in `run' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/lib/rspec/core/runner.rb:45:in `invoke' 
    # /Users/me/.rvm/gems/[email protected]/gems/rspec-core-3.4.4/exe/rspec:4:in `<top (required)>' 
    # /Users/me/.rvm/gems/[email protected]/bin/rspec:23:in `load' 
    # /Users/me/.rvm/gems/[email protected]/bin/rspec:23:in `<main>' 
    # /Users/me/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `eval' 
    # /Users/me/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `<main>' 
+1

完全なスタックトレースを提供できますか? ['-b'オプション](http://stackoverflow.com/a/7653286/1544012)でrspecを実行する必要があるかもしれません。 – BoraMa

+0

ありがとう@BoraMa、私はトレースを追加しました。役に立つものがあれば教えてください。 –

答えて

2

例スタックトレース:いくつかの奇妙な理由で、鋸山のSearchableモジュールでevaluate methodがするのではなく、カスタムXPath関数としてconcat()の機能を考慮し、ことが表示されますinternal XPath function

外部XPath関数はhandler属性のコンテキストでevaluateのコンテキストでcalled as normal ruby methodsです。通常はハンドラはSubstitutionContext classですが、場合によってはconcatメソッドが定義されているTextHelperモジュールのコンテキストを取得し、1つのパラメータを受け入れるようです(XPathのconcat()関数は任意の数のパラメータを受け入れます)。私はこれがあなたが観察するエラーにつながると思います。

this linesearchable.rbファイル(その場所はスタックトレースを参照)を開き、次の変数の内容を調べるためにいくつかのデバッグメッセージを追加できますか?

puts "ctx #{ctx.inspect}" 
puts "path #{path.inspect}" 
puts "handler #{handler.inspect}" 
if handler.respond_to?(:concat) 
    puts "concat #{handler.method(:concat).inspect}" 
else 
    puts "not responding to :concat" 
end 

次に、失敗したテストのいずれかの出力を出力できますか?

更新:出力が実際にテストコンテキストがActionView::TextHelpersモジュールによって汚染されていたと最終的にそれが試験に使用されるモデルに含まActionView::Helpersモジュールがあったことが判明したことを示しました。

+0

@BoraMaに感謝します。私は要点に完全な出力を追加しました:https://gist.github.com/ahharvey/ff87016bfaf48e0799cc0ef49a589db9。スイートが実行されるたびに別のテストで失敗するため、この問題とどのラインが最も関連しているかはわかりません。したがって、すべてをペーストしています。この特定のテストは失敗しました: '失敗/エラー:assert_select" input.btn.btn-primary.btn-lg [type =?] "、" commit "、" submit "ArgumentError:引数の数が間違っています(3 for 1) ' –

+0

要点の最後の行がキーになるかもしれませんが、あなたの考えを感謝します。 –

+0

うーん、私の推測が正しいことが出力で証明されてうれしいです! ruby 'concat'メソッドは、' this '(https://gist.github.com/ahharvey/ff87016bfaf48e0799cc0ef49a589db9#file-nokogiri_trace-L1039)のテスト実行とそれ以降のすべてのテストで定義されています。これは、 'handler'がnilに設定され、何らかの理由で現在のコンテキストが 'TextHelper'モジュールで汚染されてしまいます。しかし、それはまだ私には謎である... – BoraMa

関連する問題