Совместимость жасмина с jQuery Mobile - PullRequest
4 голосов
/ 20 марта 2012

Я только что приступил к осуществлению тестов Жасмина для jQuery mobile приложения, над которым я работаю, я столкнулся с ошибкой, которую мне удалось отследить вплоть до добавления мобильной библиотеки jQuery, ошибка выглядит следующим образом:

Jasmine.js:1769 TypeError: Cannot read property 'abort' of undefined.

Как только я уберу зависимость jQM, ошибка исчезнет.

Это мой код:

<!DOCTYPE html>
<html>
<head>
    <title>HTML5/Common/Tests</title>
    <!-- LOAD STYLES FIRST -->
    <link type="text/css" rel="stylesheet" href="libs/jasmine.css" media="screen">
    <link type="text/css" rel="stylesheet" href="../../Common/libs/jquery.mobile-1.0.1.css" />
    <!-- LOAD JASMINE LIBRARIES -->
    <script type="text/javascript" src="libs/jasmine.js"></script>
    <script type="text/javascript" src="libs/jasmine-html.js"></script>
    <!-- LOAD DEPENDENCIES -->
    <script type="text/javascript" src="../../Common/libs/jquery-1.7.1.min.js"></script>
    <script type="text/javascript" src="../../Common/libs/jquery.mobile-1.0.1.min.js"></script>
    <!-- LOAD CODE TO TEST -->
    <script type="text/javascript" src="../../Common/libs/myLib.js"></script>
    <!-- LOAD ACTUAL TESTS -->
    <script type="text/javascript">
       describe("Suite 1", function() {
            it("Should be that 1 equals 0", function() {
                  expect(0).toEqual(1);
            });
       });
    </script>
</head>
<body>
    <script type="text/javascript">
     jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
     jasmine.getEnv().execute();
    </script>
</body>
</html>

Я бы предпочел использовать Жасмин для этого приложения вместо qUnit , так как я думаю, что он более гибкий и более простой для реализации в CI и объяснения для BA и PM .. однако после того, как возиться с этой проблемой для пару часов и некоторые бесполезные поиски в гугле, но я все еще не смог решить эту проблему, поэтому я начинаю думать о том, чтобы двигаться дальше.

До того, как я это сделал, кто-нибудь испытывал эту проблему и нашел решение для нее?

Спасибо и всего наилучшего.

ОБНОВЛЕНИЕ 20 марта:

Билет в проекте Github Jasmine:

https://github.com/pivotal/jasmine/issues/204

Ответы [ 2 ]

9 голосов
/ 22 мая 2012

Я смог выполнить jasmine-тест мобильных сценариев jquery с использованием jasmine-jquery .

Хитрость заключается в том, что вам нужно отключить мобильное расширение jquery в DOMready, потому что оно попытаетсяулучшить HTML жасмина бегун.Вы можете сделать это с помощью этого скрипта, вставленного в заголовок файла html runner:

<script type="text/javascript">
  $(document).bind("mobileinit", function(){
    $.mobile.autoInitializePage = false;
  });
</script>

Затем вам нужно запустить улучшение jquery mobile на html, вставленном из вашего прибора (функция jasmine-jquery):

describe('my test', function(){
  beforeEach(function() {
    loadFixtures("fixtures/MYFixture.html");
    $("#jasmine-fixtures").attr("data-role","page").trigger("create");
  }
  it( ...
});
1 голос
/ 07 мая 2013

Попробуйте отключить автоматическую инициализацию и прослушивание хэша:

<script type="text/javascript">
  $(document).bind("mobileinit", function(){
    $.mobile.autoInitializePage = false;
    $.mobile.hashListeningEnabled = false;
  });
</script>

Затем добавьте страницу jqm к устройству jasmine-jquery и инициализируйте страницу:

beforeEach(function() {
  jasmine.getFixtures().set('<div data-role="page"></div>');
  $.mobile.initializePage();
});
...