0

어설 션을 제외하고 아래 코드는 모두 올바르게 작동합니다. 테스트가 실행되면 Jasmine은 0 개의 어설 션을보고합니다. 어떻게 내 약속을 지킬 수 있고 인정받을 수 있습니까?약속 안의 Jasmine-node 어설 션은 표시되지 않습니다.

it("should open save NTP server modal", function (done) { 
    var addModal = driver.findElement(By.className('modal-dialog')); 
    driver.wait(until.stalenessOf(addModal), 5000).then(function() { 
     return  driver.wait(until.elementIsEnabled(driver.findElement(By.id('saveButton'))), 5000).then(function (element){ 
      return element.click(); 
     }); 
    }); 

    driver.findElement(By.className("modal-body")).then(function (element) { 
     return expect(element.isDisplayed()).toBeTruthy(); 
    }); 

    done(); 
}); 

나는 (내 좋은 예 테스트)이 특정한 경우에 그냥 요소를 잡을 수 있다는 것을 알고 다음은 약속의 외부 기대 :

var element = driver.findElement(By.className("modal-body")); 
expect(element.isDisplayed()).toBeTruthy(); 

불행히도 나는 다른 경우가 어디 약속 밖에서 예외를 수행 할 방법을 결정할 수 없습니다.

답변

0

최종 콜백 내에 "완료"메소드를 넣어야합니다.

driver.findElement(By.className("modal-body")).then(function (element) { 
    expect(element.isDisplayed()).toBeTruthy(); 
    done(); 
}); 

async expecting을 처리하기위한 Chai promises 라이브러리를 살펴볼 수도 있습니다.

+0

또한 약속하는 여러 객체가 해결 될 때까지 대기하는 주장이있는 경우 async.js와 같은 라이브러리를 사용하여 "done"콜백을 제대로 호출하는 것이 좋습니다. – appu

+0

이것은 문제 감사했습니다! 나는 mocha/chai를 다시 사용하여 더 좋을지 알아 보겠습니다. – dittmanc