Knockout.js и тестирование с ошибкой объекта QUNIT - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь использовать QUNIT для проверки кода knockout.js. Код KO, который создает модель представления и применяет привязку, находится в отдельном файле (views.js). Это похоже на настройку HTML, который я использую для вызова нокаута. Эта страница работает нормально, так как я получаю значения для привязки. Однако я настроил тестовую страницу, используя QUNIT с тестовыми примерами, и получаю следующую ошибку, когда пытаюсь получить доступ к элементу viewmodel.

1. Умер в тесте № 1: объект не поддерживает это свойство или метод - { "name": "TypeError", "message": "Объект не поддерживает это свойство или метод", «номер»: -2146827850, "description": "Объект не поддерживает это свойство или метод" } 2. Ожидается 0,00 утверждений, но 1 выполнено

Как вы можете видеть по коду, я пробовал также тестовый пример в теле, но я получаю ту же ошибку. Может кто-нибудь сказать мне, что я делаю неправильно и почему Knockout будет хорошо работать с моей HTML-страницей, но не с QUNIT?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
      "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
  <head>  
    <link rel="stylesheet" href="Content/qunit.css" type="text/css"/>  
    <script src="../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="../Scripts/NRF_Items.js" type="text/javascript"></script>
    <script type="text/javascript" src="../scripts/jquery.alerts.js"></script>
    <script src="../Scripts/knockout-2.0.0.debug.js" type="text/javascript"></script>    
    <script src="../Models/GetResponse.js" type="text/javascript"></script>
    <link href="../css/jquery.alerts.css" rel="stylesheet"/>
    <script src="../Scripts/jquery.confirm.js" type="text/javascript"></script>
    <link href="../css/jquery.confirm.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="Scripts/qunit.js"></script>  
    <script type="text/javascript">

        $(document).ready(function () {
            QUnit.log = function (result, message) {
                if (window.console && window.console.log) {
                    window.console.log(result + ' :: ' + message);
                }
            }
            module("Basic Unit Test");
            test("Sample test 1", function () {
                expect(1);
                equals(divide(4, 2), 2, 'Expected 2 as the result, result was ' + divide(4, 2));
            });

            test("Sample test Knockout", function () {
                expect("0.00");
                equals(this.TransTotal(), "$0.00", 'Expected $0.00 as the result, result was ' + this.TransTotal());
            });


            function divide(a, b) {
                return a / b;
            }
        });


    </script>  
  </head>  

<body>
    <div id="price_cntnr">
      <ul id="PriceList">
      <li ><span id="SubTotal" data-bind="text: SubTotal"></span>Sub Total :</li>
          <li ><span id="TaxTotal" data-bind="text: TaxTotal"></span>Tax Total :</li>
          <li class="trans_total" ><span id="TransTotal" data-bind="text: TransTotal"></span>Trans Total :</li>
          <li ><span id="BalanceDue" data-bind="text: TransTotal"></span>Balance Due :</li>
      </ul>
    </div>
    <script type="text/javascript" src="../ViewModel/Views.js"></script>
     <script type="text/javascript">
                test("Sample test Knockout in Body", function () {
            expect("0.00");
            equals(this.TransTotal(), "$0.00", 'Expected $0.00 and the result was ' + this.TransTotal());

        });
    </script>
    <h1 id="qunit-header">QUnit example</h1>  
    <h2 id="qunit-banner" onkeypress="return qunit-banner_onkeypress()"></h2>  
    <h2 id="qunit-userAgent"></h2>  
    <ol id="qunit-tests">  
    </ol>  

  </body>  
</html>

1 Ответ

0 голосов
/ 21 марта 2012

Может ли быть эта строка?

<h2 id="qunit-banner" onkeypress="return qunit-banner_onkeypress()"></h2>

qunit-banner_onkeypress() не является допустимым идентификатором функции в JS.Дефисы - недопустимы в таких именах объявленных функций.

...