Вопрос

Следующее работает отлично:

Then /^I should see a button called "([^\"]*)"$/ do |name|
  response.should have_selector("li") do |li|
    li.should have_selector("a") do |a|
      a.should contain(name)
    end
  end
end

Теперь мне нужно дополнить это следующим шагом:

Then /^I should not see a button called "([^\"]*)"$/ do |name|
   [snip...]
end

Стандартное «И я не должен видеть» неудовлетворительно, поскольку оно улавливает целевую фразу в любом месте страницы, а не только внутри кнопок.Мне специально нужно проверить, нет ли кнопок с целевым текстом.

Моим первым инстинктом было попробовать что-то вроде этого:

Then /^I should see a button called "([^\"]*)"$/ do |name|
  response.should have_selector("li") do |li|
    li.should have_selector("a") do |a|
      a.should_not contain(name)
    end
  end
end

Но, конечно, это пройдет до тех пор, пока на странице есть какая-либо кнопка, не содержащая целевой текст, даже если есть также одна или несколько кнопок, включающих целевой текст.

Твои мысли?

Большое спасибо,

Стивен.

Это было полезно?

Решение 2

Задача решена!Я дал каждому контролю класс «контроля», затем написал это определение шага:

Then /^I should not see a control called "([^\"]*)"$/ do |name|
  response.should have_selector("a.control", :content => name, :count
=> 0)
end

Конечно, это предполагает, что я счастлив, давая им всем класс «контроля» ...

с.

Другие советы

Вы можете использовать assert_not_contain (и возможно not_contain но я в этом сомневаюсь, так как этого нет в РДОК).

a.should assert_not_contain(name)

Ваши кнопки на самом деле являются ссылками?Для кнопок (где есть значение отправки) я использую:

assert_have_selector "input[type=submit][value=\"#{text}\"]"

и:

assert_have_no_selector "input[type=submit][value=\"#{text}\"]"

хт.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top