我是新来测试,我很难找出为什么我的测试不工作。这里是我的功能文件叫做child_user_selected_categories.feature黄瓜测试不起作用
@no-database-cleaner
Feature: Managing selected_categories
In order to use portal
I want to create selected_categories for child user
Scenario: Creating a child selected_categories for a child user
Given the database contains no test data
And an user and sub user exists
Given I am on the homepage
When I attempt to sign in with following user account:
| email address | password |
| [email protected] | password |
Then I should see "[email protected]" message on page
When I follow "All Child Users"
And I view "Child Categories" for sub user "[email protected]"
Then I should see "Default Filter Level for User [email protected] is"
When I press "APPLY"
Then I should see "Custom Filter Created for [email protected]"
我使用factory_girl来录入记录。这里是我的步骤定义文件名为child_user_selected_categories.rb
And /^I view "([^"]*)" for sub user "([^"]*)"$/ do |link, user|
selector = find('tr', text: user)
within selector do
click_link(link)
end
end
Given(/^an user and sub user exists$/) do
parent = FactoryGirl.create(:user)
user = FactoryGirl.create(:user, email: "[email protected]", parent_id: parent.id, default_filter_level: parent.default_filter_level)
account = FactoryGirl.create(:account, user_id: parent.id)
FactoryGirl.create(:filter, user_id: user.id, account_id: account.id)
FactoryGirl.create(:filter, user_id: parent.id, account_id: account.id)
end
一篇名为下功能user.rb /支持有代码overrite一些用户领域 需要“factory_girl_rails”
FactoryGirl.define do
factory :user do |u|
u.email '[email protected]'
u.password 'password'
u.src_ip_addr 'hostname -I'
u.ar_id true
u.default_filter_level 'Medium'
u.src_netmask '255.255.255.0'
end
end
申请通过提交按钮jquery post
//on sibmit this will create a records for user for selected categories
$("#selectes_categories").submit(function(){
// get alll the selected category ids in list box 2
var options = $("select#lstBox2").children().map(function() {return $(this).val();}).get();
//var values = $('#categories_ids_').val()
$('#selected_category_ids').val(options);
$.post($(this).attr("action"),$(this).serialize(),function(response){
$("#flash_notice").html(response);
});
return false;
});
<%= form_tag "/levels/create_user_selected_categories", :id=> "selectes_categories" do %>
<%= hidden_field_tag 'selected_category_ids' %>
<%= hidden_field_tag 'user_id',@user.id %>
<%= submit_tag "APPLY",:class => 'btn btn-primary'%>
<% end %>
关于提交我的代码的工作。但是当我说按APPLY时,它不在使用黄瓜。我已经写了几乎相同的情况测试,他们工作得很好,但唯一的区别是在这里我使用jQuery帖子去控制器和创建记录。这里是控制器代码
def create_user_selected_categories
@user = User.find(params[:user_id]) if params[:user_id] != nil
if @user != nil
UserSelectedCategory.where(:user_id => @user.id).destroy_all
@selected_user_categories = params[:selected_category_ids]
@selected_user_categories.split(",").each{|catg_id|
UserSelectedCategory.create(:user_id => @user.id, :category_id => catg_id.to_i)
}
@total_category_masks_for_user = Category.sum(:category_mask, :conditions => {:id => @user.user_selected_categories.map{|catg| catg.category_id}})
@user_filter = Filter.find_by_user_id(@user.id)
if @user_filter == nil
Filter.create(:category_mask => @total_category_masks_for_user, :account_id => @user.account.id, :user_id => @user.id)
else
@user_filter.category_mask = @total_category_masks_for_user
@user_filter.save
end
end
render :action => 'create_user_selected_categories', :layout => false
end
有什么建议吗?谢谢
我加入@javascript,现在它说'当我尝试使用下面的用户帐户登录:#功能/ step_definitions/user_steps.rb:65 |电子邮件地址|密码| | [email protected] |密码| 无法找到字段“电子邮件”(Capybara :: ElementNotFound)'这是user_steps.rb代码'给定/ ^我尝试使用电子邮件登录“(。*?)”,密码“(。*?)”$ /做|电子邮件,密码| 登录(电子邮件,密码) end''DEF登录(电子邮件,密码) FILL_IN( 'USER_EMAIL',:与=>电子邮件) FILL_IN( 'USER_PASSWORD',:与=>密码) click_button( '登录' ) end' – user588324
它看起来像你的测试试图运行登录步骤,但浏览器不在正确的页面上。您应该能够观看浏览器并查看它正在导航的页面,以确保它是正确的。 您也可以在''我在主页上'的步骤的最后加上'save_and_open_page',这将打开您的测试导航到的页面的“快照”。 –