いくつかの共有要素を持つ記事ページ、ニュース ページ、コメント ページがあります。現時点では、次のように、共有要素をロードしてテストするためのさまざまな手順があります。
article_page.feature
Given I visit the Article page "Article title"
Then I should see the article title "Article title"
And I should see the summary "article summary"
article_steps.rb
Given('I visit the Article page {string}') do |title|
article_page.load(slug: title.parameterize)
end
Then('I should see the article title {string}') do |title|
expect(article_page).to have_content(title)
end
Then('I should see the summary {string}') do |summary|
expect(article_page.summary.text).to eq(summary)
end
comment_page.feature
Given I visit the Comment page "Comment title"
Then I should see the comment title "Comment title"
And I should see the summary "comment summary"
comment_steps.rb
Given('I visit the Comment page {string}') do |title|
comment_page.load(slug: title.parameterize)
end
Then('I should see the comment title {string}') do |title|
expect(comment_page).to have_content(title)
end
Then('I should see the summary {string}') do |summary|
expect(comment_page.summary.text).to eq(summary)
end
記事.rb
module UI
module Pages
class Article < UI::Page
set_url '/en/articles/{/slug}'
element :summary, '.summary'
end
end
end
ワールド/pages.rb
module World
module Pages
def current_page
UI::Page.new
end
pages = %w[article comment]
pages.each do |page|
define_method("#{page}_page") do
"UI::Pages::#{page.camelize}".constantize.new
end
end
end
end
World(World::Pages)
動作しますが、さらにいくつかのページがあり、いくつかの手順を共有したいと思います. load メソッドをページ パラメータとともに送信し、Page オブジェクトを初期化するさまざまな組み合わせを試しました。
shared_page_steps.rb
Given('I visit the {string} page {string}') do |page_type, title|
page = "#{page_type}_page"
send(:load, page, slug: title.parameterize)
end
article_page.feature
Given I visit the "Article" page "Article title"
comment_page.feature
Given I visit the "Comment" page "Comment title"
エラーが発生しますcannot load such file -- article_page (LoadError)
私も試しました
shared_page_steps.rb
Given('I visit the {string} page {string}') do |page_type, title|
page = "#{page_type}"
send(:load, page, slug: title.parameterize)
end
エラーが発生しますcannot load such file -- article (LoadError)
と
shared_page_steps.rb
Given('I visit the {string} page {string}') do |page_type, title|
page = "#{page_type}".classify.constantize
@page = page.new.load(slug: title.parameterize)
end
エラーが発生しますuninitialized constant Article (NameError)
send(:load) を使用すると、ページ オブジェクトではなくファイルをロードしようとしているように見えます。文字列を定数に変換しclassify.constantize
ても機能せず、UI::Pages::Article または UI::Pages::Comment を明示的に呼び出す必要があるかどうか疑問に思っていますが、その方法がわかりませんそれを動的に。
助言がありますか?