Specflow에서는 dependency injectionSpecflow의 종속성 삽입은 기능 당 하나의 컨텍스트 개체입니까?
을 사용하여 단계 정의간에 컨텍스트를 공유 할 수 있습니다. 그러면 각 기능에 대해 서로 다른 "컨텍스트"클래스가 생성됩니까?
그렇다면이 기능을 통해 단계 정의를 공유하는 것이 비실용적이지 않습니까? 필드가 설정되었다고 가정하십니까?
Specflow에서는 dependency injectionSpecflow의 종속성 삽입은 기능 당 하나의 컨텍스트 개체입니까?
을 사용하여 단계 정의간에 컨텍스트를 공유 할 수 있습니다. 그러면 각 기능에 대해 서로 다른 "컨텍스트"클래스가 생성됩니까?
그렇다면이 기능을 통해 단계 정의를 공유하는 것이 비실용적이지 않습니까? 필드가 설정되었다고 가정하십니까?
각 기능마다 다른 "컨텍스트"클래스가 있다는 뜻입니까?
나는 그런 경우가 아니라고 생각합니다. 사양을 작성할 때 시스템의 여러 종류의 "종류"를 분명히 언급 할 것입니다.
Scenario: List todo items
Given I'm registered as [email protected]
And I'm logged in as [email protected]
And I add a todo item with the text 'Listen to stackoverflow podcast'
When I list all my todo items
Then I should see the following items
| Text | Completed |
| Listen to stackoverflow podcast | false |
: 이제 우리는 다음과 같은 시나리오를 가정 해 봅시다
wh 이 기능의 단계를 구현하는 도중에 우리는 아마 다음과 같이 구성 단계 파일을하게 될 겁니다 :
AuthSteps
Given I'm registered as __
Given I'm logged in as __
TodoItemsSteps
I add a todo item with the text '__'
When I list all my todo items
Then I should see the following items
CurrentUser
의 가치를 공유 할 것이다 나는 모든
내 항목 할 일 목록을 때 ", 현재 사용자를 참조하십시오. 이 방법으로 다른 stepFile의 다른 모든 단계는 이전 단계의 문맥이 될 수 있습니다.
한편, 이러한 기능 관련 문제를 공유하는 유일한 단계는 동일한 기능 파일에 있기 때문에 When I list all my todo items
의 결과와 함께 컨텍스트 삽입을 사용하지 않습니다. Then I should see n items
과 같이 then
'진술'의 여러 변형을 사용할 수 있습니다.
컨텍스트 주입을 사용하여 구성중인 서비스의 종속성을 공유하는 데 사용하는 클래스가 두 개 이상 있거나 서비스 자체 (저장소, 세션 등 ...)가 있다고 생각합니다.)
개체의 수명은 시나리오마다 있습니다. 즉, 모든 시나리오/테스트마다 별도의 인스턴스를 얻을 수 있습니다.
이렇게하면 서로 다른 테스트간에 상태를 공유 할 수 없으므로 서로 영향을 줄 수 없습니다.
IMHO 테스트의 기능을 기반으로하지 않고 시스템의 '도메인'을 기반으로 컨텍스트를 사용해야합니다.
우리는 이와 같은 컨텍스트가 좋은 캡슐화를 제공하고 더 논리적임을 발견했습니다. 따라서 UserContext
, CartContext
, PaymentContext
등이있을 수 있습니다. 그런 다음이 컨텍스트에서 함수 나 데이터가 필요한 단계는 생성자에서 요청합니다.
Andreas가 말했듯이 specflow는 시나리오별로 격리되도록 컨텍스트를 관리합니다.
기능에 종속되지 않습니다. 모든 시나리오는 자체 컨텍스트를 가지며 시나리오가 끝나면 끝날 것이며 다른 기능은 동일한 컨텍스트를 사용할 수 있습니다
"필드가 설정되었다고 가정합니까?"란 무엇을 의미합니까? 단계 파일의 비공개 필드를 언급하고 있습니까? –