ruby-on-rails - 简单的 cucumber 测试问题

标签 ruby-on-rails ruby-on-rails-3 testing cucumber bdd

我在我的 cucumber 测试中设置了一个正则表达式

然后/I should see "(.*)"before "(.*)"/do |string1, string2|

在下面的声明中我说

page.body.should =~ regexp

我的正则表达式在哪里

regexp =/#{string1}.*#{string2}/m

场景是这样的

Scenario: sort movies alphabetically
  When I follow "Movie Title"
  Then I should see "2001: A Space Odyssey" before "Aladdin"

但是当我运行测试时我收到这个错误

expected: /2001: A Space Odyssey.*Aladdin/m
       got: "<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>Rotten Potatoes!</title>\n<link href=\"/assets/application.css\" media=\"screen\" rel=\"stylesheet\" type=\"text/css\">\n<script src=\"/assets/application.js\" type=\"text/javascript\"></script>\n</head>\n<body>\n<h1 class=\"title\">Rotten Potatoes!</h1>\n<div id=\"main\">\n<h1>All Movies</h1>\n<form accept-charset=\"UTF-8\" action=\"/movies\" id=\"ratings_form\" method=\"get\">\n<div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"✓\"></div>\n<input id=\"title_sort\" name=\"title_sort\" type=\"hidden\" value=\"true\">\n\nInclude:\nG\n<input id=\"ratings_G\" name=\"ratings[G]\" type=\"checkbox\" value=\"1\">\nPG\n<input id=\"ratings_PG\" name=\"ratings[PG]\" type=\"checkbox\" value=\"1\">\nPG-13\n<input id=\"ratings_PG-13\" name=\"ratings[PG-13]\" type=\"checkbox\" value=\"1\">\nNC-17\n<input id=\"ratings_NC-17\" name=\"ratings[NC-17]\" type=\"checkbox\" value=\"1\">\nR\n<input id=\"ratings_R\" name=\"ratings[R]\" type=\"checkbox\" value=\"1\"><input id=\"ratings_submit\" name=\"commit\" type=\"submit\" value=\"Refresh\">\n</form>\n\n<table id=\"movies\">\n<thead><tr>\n<th class=\"hilite\"><a href=\"/movies?&amp;sort=title\" id=\"title_header\">Movie Title</a></th>\n<th>Rating</th>\n<th><a href=\"/movies?&amp;sort=release_date\" id=\"release_date_header\">Release Date</a></th>\n<th>More Info</th>\n</tr></thead>\n<tbody id=\"movielist\"></tbody>\n</table>\n<a href=\"/movies/new\">Add new movie</a>\n\n</div>\n</body>\n</html>\n" (using =~)
  Diff:
  @@ -1,2 +1,44 @@
  -/2001: A Space Odyssey.*Aladdin/m
  +<!DOCTYPE html>
  +<html>
  +<head>
  +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  +<title>Rotten Potatoes!</title>
  +<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css">
  +<script src="/assets/application.js" type="text/javascript"></script>
  +</head>
  +<body>
  +<h1 class="title">Rotten Potatoes!</h1>
  +<div id="main">
  +<h1>All Movies</h1>
  +<form accept-charset="UTF-8" action="/movies" id="ratings_form" method="get">
  +<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
  +<input id="title_sort" name="title_sort" type="hidden" value="true">
  +
  +Include:
  +G
  +<input id="ratings_G" name="ratings[G]" type="checkbox" value="1">
  +PG
  +<input id="ratings_PG" name="ratings[PG]" type="checkbox" value="1">
  +PG-13
  +<input id="ratings_PG-13" name="ratings[PG-13]" type="checkbox" value="1">
  +NC-17
  +<input id="ratings_NC-17" name="ratings[NC-17]" type="checkbox" value="1">
  +R
  +<input id="ratings_R" name="ratings[R]" type="checkbox" value="1"><input id="ratings_submit" name="commit" type="submit" value="Refresh">
  +</form>
  +
  +<table id="movies">
  +<thead><tr>
  +<th class="hilite"><a href="/movies?&amp;sort=title" id="title_header">Movie Title</a></th>
  +<th>Rating</th>
  +<th><a href="/movies?&amp;sort=release_date" id="release_date_header">Release Date</a></th>
  +<th>More Info</th>
  +</tr></thead>
  +<tbody id="movielist"></tbody>
  +</table>
  +<a href="/movies/new">Add new movie</a>
  +
  +</div>
  +</body>
  +</html>
   (RSpec::Expectations::ExpectationNotMetError)
  ./features/step_definitions/movie_steps.rb:33:in `/I should see "(.*)" before "(.*)"/'
  features/sort_movie_list.feature:26:in `Then I should see "2001: A Space Odyssey" before "Aladdin"'

有什么建议吗?我假设我的错误在我的正则表达式中,但我找不到有效的解决方案。

最佳答案

好的,很高兴为您提供帮助!回答这样我就可以得到 Stack overflow karma ...要么你的模板需要列出电影,要么你的场景需要填充你正在寻找的数据。

关于ruby-on-rails - 简单的 cucumber 测试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020817/

相关文章:

mysql - 使用 Rails 从组数组中检索拥有所有组的用户

ruby-on-rails - 在提交数据库更新后运行 Rails 代码,无需 after_commit

ruby-on-rails - 如何更改我的 gem 所依赖的 gem 版本?

ruby-on-rails - getScript jQuery 路径不起作用/Ruby on Rails

ruby-on-rails - 架构arm64构建nokogiri-xmlsec-instruct的 undefined symbol Ruby gem

ruby-on-rails - 在 Heroku 上从 SQLite3 迁移到 Mongodb?

jquery - rails 3 : Where are Javascript :defaults defined after running "rails g jquery:install"?

testing - 组织.hsqldb.HsqlException : user lacks privilege or object not found: DATABASECHANGELOGLOCK

ruby-on-rails - Rails RSpec 吸盘冲床

android - Android 游戏的配置文件,以舒适的方式测试/调整游戏