2012-03-21 62 views
0

我正在尝试使用QUNIT来测试knockout.js代码。创建视图模型并应用绑定的KO代码位于单独的文件(views.js)中。它与我用来调用knockout的html类似。该页面正常工作,因为我得到了绑定的值。不过,我使用QUNIT测试用例设置了一个测试页面,当我尝试访问viewmodel的一个元素时,出现以下错误。Knockout.js和使用QUNIT OBject错误测试

上测试#1

1.Died:对象不支持此属性或方法 - { “名称”:“类型错误”, “消息”:“对象不支持此属性或方法”, “数字”:-2146827850, “说明”:“对象不支持此属性或方法” } 2.Expected 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> 
+0

你可以创建一个jsfiddle,这样我们可以更好地帮助吗? – 2012-03-21 16:34:27

+0

对不起,但你如何创建一个jsfiddle?我去了网站并粘贴了代码,但是你从那里做了什么?提前致谢。 – MSRob 2012-03-22 19:05:09

回答

0

可能是这条线?

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

qunit-banner_onkeypress()不是JS中的有效函数标识符。连字符-不允许在声明的函数名称中。

+0

谢谢。我评论了这条线,但我仍然得到同样的错误。 – MSRob 2012-03-21 15:05:16