programing

각도 조절 e2e 테스트 - 계속하기 전에 주요 이벤트가 완료될 때까지 기다립니다.

newsource 2023. 3. 16. 21:31

각도 조절 e2e 테스트 - 계속하기 전에 주요 이벤트가 완료될 때까지 기다립니다.

일련의 UI 이벤트를 트리거하는 각 e2e 테스트를 작성하는 사람들은 어떻게 합니까?시나리오의 비동기적인 특성으로 인해 그것이 어려워지는 것 같습니다.

세부사항:특수 폼의 편집을 빠르게 하기 위해 키 조작이 많은 앱에 대한 테스트를 작성하고 있습니다.시나리오 DSL(아래 참조)에 대한 키보드 확장을 조합했지만 테스트의 첫 번째 키 이벤트만 효과가 있습니다.

keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down
expect(element('*:focus').text()).toEqual('00:04');
keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down
expect(element('*:focus').text()).toEqual('');  // but equals 00:04

두 번째 키 다운은 키를 라우팅할 포커스를 찾을 수 없기 때문에 아무 것도 하지 않습니다(화면에 포커스가 있지만).혼란스러운.

angular.scenario.dsl('keyboard', function() { 
    var chain  = {}; 
    chain.keydown = function(selector, keyEvent, keyCode, shift, ctrl) { 
        return this.addFutureAction("keyEvent", function($window, $document, done) { 
            var jQuery = $window.$; 
            var e = jQuery.Event(keyEvent);
            e.keyCode = keyCode; // # Some key code value
            e.altKey = false;
            e.ctrlKey = ctrl;
            e.shiftKey = shift;
            if (selector == null) selector = '*:focus';
            var j = jQuery(selector);
            if (j == null) j = jQuery('body');
            j.trigger(e);
            done(); 
        }); 
    }; 
    return function() { 
        return chain; 
    }; 
}); 

사용자는 이 질문을 포기한 것 같습니다만, 말씀드렸듯이 이것은 이벤트 핸들러의 문제일 것입니다.

정확히 같은 코드로 모든 것이 예상대로 작동하도록 만들었다.

언급URL : https://stackoverflow.com/questions/13705104/angular-scenario-e2e-testing-waiting-for-key-events-to-complete-before-proceed