Ruby on rails rspec水豚选择轨4
我正在尝试编写一个rspec测试,它将:Ruby on rails rspec水豚选择轨4,ruby-on-rails,rspec,Ruby On Rails,Rspec,我正在尝试编写一个rspec测试,它将: 访问商店页面 在国家/地区选择框中选择一个值 并测试该值是否存在(最初在国家/地区框中,但在第二次测试中,我还将测试依赖于国家/地区的城市) HTML页面 <!DOCTYPE html> <html> <head> <title>Ruby on Rails Tutorial Sample App</title> <link data-turbolinks-track
- 访问商店页面
- 在国家/地区选择框中选择一个值
- 并测试该值是否存在(最初在国家/地区框中,但在第二次测试中,我还将测试依赖于国家/地区的城市)
<!DOCTYPE html>
<html>
<head>
<title>Ruby on Rails Tutorial Sample App</title>
<link data-turbolinks-track="true" href="/assets/application.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/custom.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/password_resets.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/people.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/products.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/scaffolds.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/sessions.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/static_pages.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/store.css?body=1" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/assets/users.css?body=1" media="all" rel="stylesheet" />
<script data-turbolinks-track="true" src="/assets/jquery.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/jquery_ujs.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/bootstrap.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/password_resets.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/people.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/products.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/sessions.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/static_pages.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/store.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/users.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/application.js?body=1"></script>
<meta content="authenticity_token" name="csrf-param" />
<meta content="NcsV3Ve7QqLTjeLNz5MLuCxzvG8urc63NiDk7RZTGtM=" name="csrf-token" />
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<header class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
<a href="/" id="logo">sample app</a>
<nav>
<ul class="nav btn-group navbar-nav navbar-right list-inline">
<li><a href="/">Home</a></li>
<li><a href="/help">Help</a></li>
<li><a href="/signin">Sign in</a></li>
</ul>
</div>
</ul>
</nav>
</div>
</div>
</header>
<div class="container">
<h2>some text</h2>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="row">
<div class="col-md-6 col-md-offset-2">
<form accept-charset="UTF-8" action="/store/show" method="get"><div style="display:none"><input name="utf8" type="hidden" value="✓" /></div>
<label for="catalogue_country">Country</label>
<select id="countries_select" name="catalogue[country_id]"><option selected="selected" value="1">France</option>
<option value="2">Italy</option>
<option value="3">United Kingdom</option></select>
<div class="pull-right">
<input class="btn brn-large btn-primary" name="commit" type="submit" value="Add to Cart" />
</form> </div>
</div>
</div>
</div>
</div>
<footer class="footer">
<small>
<a href="http://railstutorial.org/">Rails Tutorial</a>
by Michael Hartl
</small>
<nav>
<ul>
<li><a href="/about">About</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="http://news.railstutorial.org/">News</a></li>
</ul>
</nav>
</footer>
<pre class="debug_dump">--- !ruby/hash:ActionController::Parameters
controller: store
action: index
</pre>
</div>
</body>
</html>
失败
失败:
1) 索引
失败/错误:访问存储路径
命名错误:
nil:NilClass的未定义方法“id”
rails控制台[app.store\u path]验证store\u路径是否为“/store”
选择框是根据本博客中的说明动态填充的
感谢您的帮助,提前谢谢
有很多路线
match '/store', to: 'store#index', as: :store, via: 'get'
get 'store/show'
match 'store/update_cities', to: 'store#update_cities', as: :update_cities, via: 'get'
match 'store/update_currencies', to: 'store#update_currencies', as: :update_currencies, via: 'get'
它只有一个索引页(存储路径),其中有一个国家选择框
这是商店管理员
def index
@countries = Country.all
@cities = City.where("country_id = ?", Country.first.id)
@currencies = Currency.where("country_id = ?", Country.first.id)
@locations = Location.where("city_id = ?", Location.first.id)
@products = Product.where("Location_id = ?", Product.first.id)
@plugs = Plug.where("Location_id = ?", Plug.first.id)
end
def show
end
def update_cities
@cities = City.where("country_id = ?", params[:country_id])
respond_to do |format|
format.js
end
end
您是要访问特定的商店,还是列出所有的商店 在您的情况下,您试图访问一个特定的存储,您需要为它传递一个参数,在本例中是存储id 要了解控制台中写入的确切路径,请执行以下操作:
rake routes
如果要列出需要写入的所有存储,您将找到其url的每个路径:
stores_path
而不是:
store_path
store_路径为/store/:id我在上面添加了路由和控制器,“/store”路径被路由到store_index.html.erb,这一页有3个选择框,首先是国家,然后是城市和货币。这是我希望测试的选择框中的值。国家/地区模型是否有任何条目?可能是种子什么的?。因为如果没有,这意味着国家/地区模型中没有条目。在这种情况下,您正试图找到nil对象的id,正如您在索引操作中所说:Country.first.id,要自己测试它,请在索引操作中尝试调试器您可以在种子中定义国家列表,或者尝试为其创建工厂您的上一条评论是正确的,开发数据库已填充,但测试为空,相关试验数据库;rake db:reset RAILS\u ENV=test rake db:migrate RAILS\u ENV=test rake db:seed RAILS\u ENV=test
store_path