2015-01-20 3 views
1

Мы пытаемся выразить наши требования, следуя спецификации, с помощью примерного подхода на языке окультур. Одна часть функциональности - это проверка того, что при некоторых условиях не выполняется, и в противном случае она должна быть положительной. Таким образом, у нас есть много сценариев, как это:Опишите положительный тест на языке огурца

Given a <condition>   //condition changes between scenario 
When the check is performed 
Then the result is negative 

Таким образом, после описания всех условий, при которых проверка может потерпеть неудачу, мы должны были бы один положительный сценарий, как:

Given ...    // this is what we're missing. 
When the check is performed 
Then the result is positive 

Мы не можем придумать хороший способ сформулировать это. Обратите внимание: Это часть общей функциональности, которая может быть расширена различными продуктами, поэтому мы не можем просто написать: «Ни одно из вышеуказанных условий не применяется»

Может ли кто-нибудь из вас придумать формулировка, которая будет означать что-то вроде Given there are no conflicting conditions, но более проверяемо?

ответ

1

Может быть, вы могли бы просто сделать

When the check is performed 
Then it works 

Было бы гораздо лучше, хотя, если сценарии говорили о том, что есть. Скажем, мы подписываем. Я хотел бы начать с

When I sign in 
Then I should be signed in 

, а затем продлить, что для печальных путей

Given my email is invalid 
When I sign in 
Then I should not be signed in 

Все вышеперечисленное, вероятно, потребуется некоторый фон, например,

Given I am registered. 

Вы не должны иметь заданный для каждого сценария

Вот пример imlementation для данного

module RegistrationStepHelper do 
    def create_registered_user 
    # return a user who is registered and can sign in 
    ... 
    def sign_in_as(user) 
end 
World RegistrationStepHelper 

"Given I am registered" do 
    @i=create_registered_user 
end 

When "I sign in" do 
    sign_in_as: @i 
end 

... 

для слегка расширенного примера see here

+0

Вместо " Когда я вхожу в систему, тогда мне нужно войти в «Я буду использовать» Когда я отправлю действительные учетные данные, Затем мне нужно войти в систему », это сделало бы тест менее двусмысленным. Также. Я бы не ссылался на электронную почту, так как с точки зрения тестирования они являются разрозненными объектами, вместо этого я бы просто использовал «Когда я отправляю недопустимые учетные данные, тогда я не должен быть подписан». Полностью согласен с вами в отношении фона. –

+0

Но я не могу говорить о «действительных учетных данных» без описания действительных средств. И это именно та проблема, которая действительна, это те, кто не конфликтует с другими сценариями. @diabolist, я не вижу, как я мог бы выдать данный Out, так как это подразумевало бы, что предложения When-Then всегда верны для любых предварительных условий. – Chirlo

+0

Действительные учетные данные - это то, как вы входите. Пока я вижу, что я не думаю, что в этом есть необходимость, когда у вас есть функция, устанавливающая контекст о входе в систему. Как я уже сказал, вам понадобится какой-либо настройте, кто вы. Я отредактирую ответ и добавлю пример реализации. – diabolist

Смежные вопросы