2014-12-17 2 views
1

이것이 가능할 지 모르지만 내 문제는 여기에 있습니다.
Ember.js 응용 프로그램에서 일부 자바 스크립트 테스트를하고 있으며 어느 시점에서 특정 조건이 충족 될 때 파트너 웹 사이트에 새 창을 여는 버튼/링크입니다.Ember 테스트에서 새 창이 열렸는지 확인합니다.

이제 카르마/qunit 테스트에서이 동작을 테스트 할 방법을 찾고 있습니다.하지만 어떻게해야 할 지 조금이라도 생각하지 못했습니다. 모든 포인터는 감사하겠습니다!

document.write('<div id="test-app"></div>'); 
App.rootElement = '#test-app'; 
App.setupForTesting(); 
App.injectTestHelpers(); 

module("Services"); 

test("Access services", function() { 
    visit("/p/2/i/services").then(function() { 
    click('#MyService').then(function() { 
     // What should I do here ? 
    }); 
    }); 
}); 
+0

PhanjomJS는'window.open'에 대한 지원을 추가했습니다 : https://github.com/ariya/phantomjs/issues/10151 – givanse

+0

팁을위한 Thx. 나는 당신이 가리키는 이슈를 어떻게보아야하는지, 어떻게 구현해야 하는지를 알지 못하기 때문에 몇 가지 코드를 추가했다. 몇 가지 제안을 추가하면 좋을 것입니다! – Sephy

답변

2

나의 첫번째 추천은 모듈로 추상화 window.open 기능하는 것, 그래서 창을 열하고자 할 때 응용 프로그램은 단일 인터페이스에 액세스합니다. 모듈이 어떻게 동작하는지 신경 쓰지 않아야하며, 유일한 관심사는 올바른 매개 변수를 사용하여 모듈의 윈도우 열기 메서드를 호출한다는 것입니다.

정확한 매개 변수를 사용하여 창 열기 메서드를 호출하는 방법은 Sinon.js (http://sinonjs.org/)와 같은 것을 사용하여 테스트에 대한 메서드 스텁을 사용하는 것입니다. 이렇게하면 창 열기 메소드를 스텁 (stub)하고, 특정 매개 변수를 사용하여 특정 횟수만큼 호출 된 어설 션을 실행할 수 있습니다. 처음에는 설정하기가 약간 힘들지만 철저히 앱을 테스트하는 것은 반드시 필요한 악마입니다.

+0

그건 상상도 못했던이 문제를 해결하는 흥미로운 방법입니다. 팁 주셔서 감사합니다, 나는 그것을 조사하고 다시 연락 할게. 이 간단한 href에 의해 수행되면 어떻게 "window.open"관리 할 것이라고? – Sephy

+0

링크에'target = "_ blank"'속성을 추가하고 싶지 않은 이유가 있습니까? 내가 말할 수있는 것부터, 특정 조건 하에서 링크 존재 여부를 테스트하고 다른 조건 하에서는 링크가 없는지를 테스트하고 있습니까? – mpowered

+0

또한 올바른 'href' 속성 값을 확인하고 싶을 수도 있습니다. 클릭을 테스트 할 필요가 없습니다. 사용자를 테스트하지 않으시는 분 :-) – mpowered

관련 문제