5
我知道Cucumber,您可以在給定步驟定義期間定義實例變量。 此實例變量成爲World
範圍的一部分。 然後,您可以在When和Then的步驟定義期間訪問此實例變量。您是否可以在黃瓜的Given,When和Then步驟定義中定義實例變量
你能在什麼時候,然後進行步驟定義 定義實例變量也和在後來當再踩定義訪問它們?
如果有可能,在 何時和然後步驟定義過程中定義實例變量甚至是常見做法嗎?
謝謝。
我知道Cucumber,您可以在給定步驟定義期間定義實例變量。 此實例變量成爲World
範圍的一部分。 然後,您可以在When和Then的步驟定義期間訪問此實例變量。您是否可以在黃瓜的Given,When和Then步驟定義中定義實例變量
你能在什麼時候,然後進行步驟定義 定義實例變量也和在後來當再踩定義訪問它們?
如果有可能,在 何時和然後步驟定義過程中定義實例變量甚至是常見做法嗎?
謝謝。
是的,你可以在任何步驟類型中設置實例變量。
例如,考慮到這個特點:
Feature: Instance variables
Scenario: Set instance variables during all steps
Given a given step sets the instance variable to "1"
Then the instance variable should be "1"
When a when step sets the instance variable to "2"
Then the instance variable should be "2"
Then a then step sets the instance variable to "3"
Then the instance variable should be "3"
和步定義:
Given /a given step sets the instance variable to "(.*)"/ do |value|
@your_variable = value
end
When /a when step sets the instance variable to "(.*)"/ do |value|
@your_variable = value
end
Then /a then step sets the instance variable to "(.*)"/ do |value|
@your_variable = value
end
Then /the instance variable should be "(.*)"/ do |value|
@your_variable.should == value
end
您將看到的場景通過,這意味着當再步驟都成功設置實例變量。
實際上,Given,When和Then只是彼此的別名。僅僅因爲您將步驟定義定義爲「給定」,它仍然可以稱爲「當」或「然後」。例如,上面的情況下仍然會通過如果所使用的步驟的定義爲:
Then /a (\w+) step sets the instance variable to "(.*)"/ do |type, value|
@your_variable = value
end
Then /the instance variable should be "(.*)"/ do |value|
@your_variable.should == value
end
注意,第一「然後」步驟的定義可以由「給定」和「當」在方案中使用。
至於是否是很好的做法,在設置時,然後步驟,它只不過是在給定的步驟,這樣做更壞的實例變量。理想情況下,您的任何步驟都不會在創建步驟耦合時使用實例變量。但是,實際上,我沒有通過使用實例變量遇到重大問題。
你的回答幫了我很多。但是,我現在想:有沒有一種方法來檢查一個步驟計算出的最後一個值?我的意思的,而不是「耦合」的步驟參照一個共同的實例變量,可能我們只是檢查上一步「LAST_VALUE」?有沒有辦法呢? –
@KeillRandor,我不知道這樣做的方法。這不是我聽說過有人在做的事情,所以可能需要對框架進行一些修改。 –
好吧,我明白了。我正在通過設置實例變量來做到這一點,所以謝謝! –