cucumber.js에 한 단계 (여러 웹 사이트가있는 플랫폼의 페이지)에 현재 탐색 상태를 저장하려고하므로 다음 단계가 필요합니다. 시나리오는 그것을 처리 할 수 있습니다. 나는 그것을 위해 세계 물체를 사용한다고 생각했지만 불가사의 한 일들이 일어나고 있습니다.cucumber.js의 월드 오브젝트 또는 오이 테스트에서 상태를 넣을 위치
는이 같은 탐색 상태 개체가 : 그럼
module.exports = {
pageName:null,
siteName: null,
isLoggedIn: false
}
내가이
function NavigationStateManager() {
var state
this.setState = function(stateP) {
state = stateP
}
this.setPage = function(pageNameP, siteNameP, isLoggedInP) {
// among other things do something link this:
state.pageName = pageNameP
state.siteName = siteNameP
state.isLoggedIn = isLoggedInP
}
}
같은 NavigationStateManager이를 그리고 세계 객체 내 단계에서
var navState = require('./navigation-state')
var NavigationStateManager = require('./navigation-state-manager')
var navigationStateManager = new NavigationStateManager()
function World() {
this.navState = simpleCopy(navState)
navigationStateManager.setState(this.navState)
}
function simpleCopy(objectToCopy) {
var copy = {}
for(var key in objectToCopy) {
copy[key] = objectToCopy[key]
}
return copy
}
이 파일 나는 이것을한다
var World = require('../support/world')
module.exports = function() {
this.World = World
this.Given(...)
this.Then(...)
}
주어진 단계가 실행되고 Then 단계가 실행될 때 어떤 이유로 NavigationStateManager에서 상태가 정의되지 않게됩니다. 로그 할 때 setState가 '정의되지 않은'인수로 호출되는 것을 볼 수 없습니다. World 객체에 NavigationStateManager를 두는 다른 설정이 있지만 비슷한 문제가 발생했습니다. 분명히 월드 오브제먼트는 시나리오의 모든 단계를 통해 동일하게 유지되지 않지만 어떻게 동작합니까? 오류가 내가 가진 모든 JavaScript 지식에 어긋나는 것 같습니다. 어디에서 시험을 치러야합니까?
이 문제가 발생한 단계의 예를 보여줄 수 있습니까? – RedMage
조금 업데이트했습니다. 나는 정확한 코드를 가지고 있지 않다. 내가 지금 이해하고있는 것들 중 하나는 지원 폴더에있는 모든 것이 오이에 의해 자동으로로드된다는 것입니다. 수동으로로드 했으므로 아마 두 개의 World 객체를 만들었을 것입니다. 그러나 나는 왜 그것이 주어진 단계에서 내 자신의 World 객체를 사용하는지, 그리고 나서 오이는 Then 단계에서 World 객체를 생성했는지 모르겠다. 나는 아직도 당신이 알고있는 경우에 World 객체에 대한 라이프 사이클 및 사용 사례에 대한 세부 사항을 너무 이해하고 싶습니다. 감사. – raichu
당신은 머리에 못을 박았습니다. World 변수를 할당 한 업데이트 된 코드를 보자 마자 나는 "모든 종류의 문제를 일으킬 것입니다"라고 생각했습니다.구체적인 내용은 모르지만 잠재적으로 도움이 될만한 것이 있습니다. "chimpjs"라는 모듈이 있습니다. 당신이 웹 인터페이스 테스트를 위해 오이를 사용한다면 강력하게 추천 할 수는 없습니다. 그것은 오이, webdriverio, 차이 티, 그리고 다른 좋은 것들을 함께 묶습니다. 그것은 당신을 위해 셀레늄을 관리하고 섬유를 사용하므로 동기식 스타일로 테스트를 작성할 수 있습니다. – RedMage