我正在嘗試使用QUNIT來測試knockout.js代碼。創建視圖模型並應用綁定的KO代碼位於單獨的文件(views.js)中。它與我用來調用knockout的html類似。該頁面正常工作,因爲我得到了綁定的值。不過,我使用QUNIT測試用例設置了一個測試頁面,當我嘗試訪問viewmodel的一個元素時,出現以下錯誤。Knockout.js和使用QUNIT OBject錯誤測試
上測試#11.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>
你可以創建一個jsfiddle,這樣我們可以更好地幫助嗎? – 2012-03-21 16:34:27
對不起,但你如何創建一個jsfiddle?我去了網站並粘貼了代碼,但是你從那裏做了什麼?提前致謝。 – MSRob 2012-03-22 19:05:09