2012-03-21 3 views
0

knockout.js 코드를 테스트하기 위해 QUNIT를 사용하려고합니다. viewmodel을 만들고 바인딩을 적용하는 KO 코드는 별도의 파일 (views.js)에 있습니다. 그것은 녹아웃을 호출하는 데 사용하고있는 html과 비슷한 설정입니다. 그 바인딩에 대한 값을 얻은 이후 그 페이지가 잘 작동합니다. 그러나 테스트 케이스 QUNIT를 사용하여 테스트 페이지를 설치하고 viewmodel 요소에 액세스하려고하면 다음 오류가 발생합니다. 테스트 # 1Knockout.js 및 QUNIT OBJECT 오류 테스트

1.Died : 개체가이 속성 또는 메서드를 지원하지 않습니다 - { "이름": "형식 오류", "메시지": "개체가이 속성 또는 메서드를 지원하지 않습니다", "수"-2146827850, "설명" } 2.Expected 0.00 주장 "개체가이 속성 또는 메서드를 지원하지 않습니다",하지만 당신은 코드에 의해 볼 수 있듯이 1

를 실행하고 내가 테스트를 시도 시체도 마찬가지지만, 같은 오류가 발생합니다. 누군가 내가 뭘 잘못하고 왜 녹아웃은 내가 가진 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을 만들면 도움이 될까요? –

+0

죄송합니다.하지만 어떻게 jsfiddle을 만드시겠습니까? 웹 사이트에 가서 코드를 붙여 넣었지만 거기에서 무엇을합니까? 미리 감사드립니다. – MSRob

답변

0

이 라인이 될 수 있을까요?

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

qunit-banner_onkeypress()은 JS에서 유효한 함수 식별자가 아닙니다. 하이픈 -은 이와 같은 선언 된 함수 이름에는 사용할 수 없습니다.

+0

감사합니다. 나는 그 줄을 주석 처리했으나 여전히 같은 오류가 발생한다. – MSRob