2013-11-01 61 views
0

我正在努力将JavaScript单元测试包括到我正在开发的ASP.NET项目中。我已经安装了Chutzpah Adapter和Jasmine。在仔细地按照this Ryan Cromwell video提供的安装和设置环境的方向之后,我遇到了与Chutzpah and QUnit问题相似的错误,但是我使用Jasmine而不是QUnit,并且他的解决方案似乎不适用,至少不会以同样的方式。VS 2012 Chutzpah适配器和Jasmine Javascript单元测试集成

以下是正在测试的JavaScript(WebApp.Utils.js)。被测试的功能是使用“揭示模块”模式(不知道这是相关的或不)中定义的WebApp.Utils“类”的方法...

var WebApp = (typeof WebApp === "undefined") ? { } : WebApp ; 

$(document).ready(function() { 

    WebApp .Utils = (function() { 

     var ParseDecimal = function (value, decimalPlaces) { 
      /// <summary>Parses a number into a decimal value with the specified number of decimal places</summary> 
      /// <param name="value" type="number">Number to parse</param> 
      /// <param name="decimalPlaces" type="integer">Number of decimal places to parse to. </param> 
      /// 
      return parseFloat(Math.round(value * 100)/100).toFixed(decimalPlaces); 
     } 

     return { 

      ParseDecimal: ParseDecimal 
     } 

    })(); 

}); 

这里是写入的测试,使用茉莉到测试它。文件引用已被验证为正确。事实上,智能感知工作,所以我知道它看到它。

/// <reference path="../tools/jasmine.js" /> 
/// <reference path="../shared/WebApp.Utils.js" /> 
/// 

describe("WebApp.Utils.ParseDecimal", function() { 


    it("can ParseDecimal", function() {   
     var result = WebApp.Utils.ParseDecimal(15.451222, 2); 
     expect(result).toBe(15.45); 
    }); 
}); 

这里是我得到的错误是当我保存文件并运行测试时Visual Studio。

Test Name: WebApp.Utils can ParseDecimal 
Test FullName: j:\projects - gary\WebApp\rc1iteration05\rc1iteration05\scripts\tests\test.js::WebApp.utils::can parsedecimal 
Test Source: j:\projects - gary\WebApp\rc1iteration05\rc1iteration05\scripts\tests\test.js : line 7 
Test Outcome: Failed 
Test Duration: 0:00:00.003 

Result Message: TypeError: 'undefined' is not an object (evaluating 'WebApp.Utils.ParseDecimal') in file:///j:/projects%20-%20gary/WebApp/rc1iteration05/rc1iteration05/scripts/tests/test.js (line 9) 
     at file:///j:/projects%20-%20gary/WebApp/rc1iteration05/rc1iteration05/scripts/tests/test.js:9 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:1064 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:2096 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:2049 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:2378 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:2096 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:2049 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:2523 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:2096 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:2049 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:2145 
     at file:///C:/USERS/GSTENSTROM/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/11.0/EXTENSIONS/ADQAX1GK.5GB/TestFiles/jasmine/jasmine.js:802 
     at startJasmine (phantomjs://webpage.evaluate():15) 
     at phantomjs://webpage.evaluate():25 

回答

1

事实证明,Chuztpah无法识别根级别引用(与相对引用)。你没有在我提供的代码看到的是,WebApps.Utls.js文件还包含对

/// <reference path="/Scripts/jquery/_references.js" /> 
/// <reference path="/Scripts/tools/modernizr-2.6.2.js" /> 
/// <reference path="/Scripts/tools/_references.js" /> 

这些其他的参考文件的参考,进而提供联动工具,如淘汰赛,jQuery的,等等。一旦我将这些单独的相对引用提供给我的Jasmine测试文件的顶部,一切正常。

/// <reference path="../../jquery/jquery-2.0.3.js" /> 
/// <reference path="../../tools/jasmine.js" /> 
/// <reference path="../../tools/knockout-2.1.0.debug.js" /> 
/// <reference path="../../tools/modernizr-2.6.2.js" /> 
/// <reference path="../../tools/jshashset_src.js" /> 
/// <reference path="../../tools/jshashtable-2.1.js" /> 
/// <reference path="../../tools/json2.js" /> 
/// <reference path="../../Models/ServiceLevelDTO.js" /> 
/// <reference path="../../shared/WebApp.Utils.js" />