Je suis nouveau pour les tests et j'ai du mal à comprendre pourquoi mon test ne fonctionne pas. Voici mon fichier fonctionnalité appelée child_user_selected_categories.featureTest de concombre ne fonctionne pas
@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]"
J'utilise factory_girl pour enregistrer des Inser. Voici mon fichier de définition de l'étape appelée 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
Filed appelé user.rb sous des traits/support a le code pour overrite certains champs utilisateur require '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
APPLIQUENT bouton soumettre à l'aide 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 %>
Sur soumettre mon code faire son travail. Mais quand il ne fonctionne pas en utilisant du concombre quand je dis appuyer sur APPLIQUER. J'ai écrit un test pour presque le même scénario et ils fonctionnent très bien mais seule la différence est ici J'utilise jquery post pour aller au contrôleur et créer des disques. Voici le code du contrôleur
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
Des suggestions? Merci
J'ai ajouté @javascript et maintenant sa 'dire Lorsque je tente de vous connecter avec suivant compte utilisateur: # Caractéristiques/step_definitions/user_steps.rb: 65 | adresse email | mot de passe | | [email protected] | mot de passe | Impossible de trouver le champ "email" (Capybara :: ElementNotFound) 'Voici le code user_steps.rb' Given/^ J'essaie de me connecter avec email "(. *?)", Mot de passe "(. *?)" $/faire | email, mot de passe | login (email, mot de passe) end' 'def login (email, mot de passe) fill_in ('user_email',: avec => email) fill_in ('user_password',: avec => mot de passe) click_button ('login' end' – user588324
Il semble que votre test essaie d'exécuter l'étape de connexion, mais le navigateur n'est pas sur la bonne page. Vous devriez être capable de regarder le navigateur et de voir à quelles pages il navigue pour s'assurer qu'il est correct. Vous pouvez également mettre 'save_and_open_page' à la fin de l'étape« Étant donné que je suis sur la page d'accueil », ce qui ouvrira un« instantané »de la page à laquelle votre test a navigué. –