2017-01-05 7 views
0
describe 'Destroy Student Record' do 
     it 'should allow to Delete My student', js: true do 
      expect { 
      find('.icon-delete',"a[href ='/room/grade3/#{@student.id}']").click 
      page.find('.btn.delete', text: 'Sure').click 
      }.to change(Student, :count).by(-1) 
     end 
     end 

, но проблема в том, что, когда их 2 записи он показывает .Icon-удаление неоднозначно, а также HREF же для Удалять и просмотреть детали так, для HREF также он проявляет неоднозначность. Как я могу сделать поиск комбинированнойКак сделать поиск комбинации для щелкать чернила Cypabara Rspec

+0

найти не принимает 2 строки - показать код HTML, который вы пытаетесь нажать –

+0

jerrytom

ответ

2

С HTML

<a href="/room/grade3/10036" class="btn" title="Delete"> 
    <i class="icon-delete"></i> 
</a> 

Есть несколько способов Клика - click_link будет соответствовать на ид, текст или названии ссылки, чтобы просто нажмите на ссылке вы могли бы сделать

click_link('Delete', href: "/room/grade3/#{@student.id}") 

Если вам нужно нажать именно на < я> элемент, который вы могли бы сделать что-либо из

find_link('Delete', href: "/room/grade3/#{@student.id}").find('.icon-delete').click 
find("a[href ='/room/grade3/#{@student.id}'] i.icon-delete").click 

Примечание: даже с этими исправлениями ваш тест, вероятно, не удастся. Это связано с тем, что вы используете совпадение change, и ваш блок ничего не делает, чтобы убедиться, что действие выполнено до того, как совпадение проверки снова проверит счетчик учащихся. Это связано с тем, что при использовании любого из поддерживающих JS драйверов click просто нажимает кнопку, он не знает о каких-либо побочных эффектах для ожидания и возвращается к тесту, пока приложение отключается и начинает обрабатывать любое поведение, вызванное нажатием кнопки. Чтобы исправить это ваш тест должен был бы быть что-то вроде

expect { 
    ... Do whatever clicking of link/button ... 
    expect(page).to have_text("Student deleted") # whatever message is shown once the student is actually deleted or an assertion for other visible change 
}.to change(Student, :count).by(-1) 

Таким образом, код будет задержка, пока студент фактически не удаляется, а change согласовани могут получить рассчитывать Студента снова.