2015-04-21 3 views
0

Я пытаюсь запустить этот тест:вызов phantomjs от жасмин

it("should not select anything (emptiness) by default", function() { 
     // given 
     //phantomjs.open("google.com"); // just guessing 

     // when 
     var text = wordHighlighter.getSelectedText(); 

     // then 
     expect(text).toEqual(""); // nothing is selected (yet) 
    }); 

С комментировал phantomjs.open("google.com") тест проходит.

Код Пытаюсь тест:

var getSelectedText = function() { 
     var text = ""; 
     if (window.getSelection) { // windows suppose to be open 
      text = window.getSelection().toString(); 
     } 
     return text; 
    }; 

Кажется, у меня есть НПЕ установить зависимые пакеты. По крайней мере, мой тест начинается с команды «grunt».

Мой package.json (к примеру) выглядит следующим образом:

{ 
    "name": "project-name", 
    "version": "0.0.1", 
    "devDependencies": { 
    "express": "~4.4.3", 
    "grunt": "~0.4.5", 
    "grunt-cli": "~0.1.13", 
    "grunt-karma": "~0.9.0", 
    "karma": "~0.12.28", 
    "karma-jasmine": "~0.3.2", 
    "karma-junit-reporter": "^0.2.2", 
    "karma-phantomjs-launcher": "~0.1.4", 
    "phantomjs": "~1.9.7-10", 
    "karma-ng-html2js-preprocessor" : "~0.1" 
    } 
} 

(также у меня есть надлежащее Gruntfile.js и karma.conf.js)

UPDATE: я в конечном итоге с ошибкой (если подредактировать phantomjs строка):

ReferenceError: Can't find variable: phantomjs

(Я не уверен, как я могу получить доступ к phantomjs, если он исходит из npm-packag эс я завишу)

Если я с:

var webPage = require('webpage'); 
    var page = webPage.create(); 
    page.open(... 

Тогда:

ReferenceError: Can't find variable: require

Я нашел this, как возможное решение: но я использовать jasmine 2.x И that предлагает мне разделить мой specs .. По-прежнему пытайтесь понять это.

Q: Как открыть окно (сделать использование phantomjs), чтобы сделать тест работает с window «открыт/не определено?

+0

похожи (на самом деле не ответил): HTTP: // StackOverflow.com/questions/11891998/phantomjs-cant-find-variable-require-when-using-phantomjasmine – ses

ответ

0

phantomjs.open не является синхронной функцией.

После этого он вызывает обратный вызов, который вы передаете в качестве второго или третьего аргумента.

Вы, вероятно, хотите сделать что-то вроде этого:

it("should not select anything (emptiness) by default", function (/* status */) { 
    phantomjs.open("google.com", function() { 
     var text = wordHighlighter.getSelectedText(); 

     // then 
     expect(text).toEqual(""); // nothing is selected (yet) 
    }); 
}); 
+0

обновил мой вопрос. – ses

0

Ok. Я понял. Кажется, не существует способа открыть окно браузера, как хотелось. Я смешивал концепции (специфический сценарий phantom-js и жасмин).

Таким образом, вместо того, чтобы открывать новую страницу, мы можем придать любой DOM/часть страницы нашего window (открыто для нас PhantomeJS конфа) со всеми инжектированными сценариями мы указанными в karma.conf и GruntFile.js

it("should get selection if text in the DOM is selected", function() { 
     // given 
     var body = document.getElementsByTagName('body')[0]; 

     // inject text element to the page body and select that text 
     var textElement = document.createTextNode("Hello Hello World!"); 
     textElement.id = "textElementId"; 
     body.appendChild(textElement); 

     selectElementText(textElement); // select element 

     // when 
     var text = wordHighlighter.getSelectedText(); 

     // then 
     expect(text).toEqual("Hello Hello World!"); 

}

(я получил selectedElementText() от this post (хороший друг))

Смежные вопросы