ko is not defined Error in Chutzpah
我正在尝试为我的SPA项目编写单元测试。我们使用
我已经在Visual Studio 2012中安装了Chutzpah。
当我为视图模型运行我的测试时,即使敲除js和其他js的加载正确,它也会使我陷入错误之下。
Uncaught ReferenceError: ko is not defined
我的Json配置代码:
1 2 3 4 5 6 7 8 9 10 11 12 | { "Framework":"jasmine", "TestHarnessReferenceMode":"AMD", "TestHarnessLocationMode":"SettingsFileAdjacent", "References" : [ {"Path" :"../Scripts/require.js" }, {"Path" :"config.js" } ], "Tests" : [ {"Path":"tests"} ] } |
我的配置Js代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | require.config({ paths: { 'text': '../Scripts/text', 'durandal': '../Scripts/durandal', 'plugins': '../Scripts/durandal/plugins', 'jquery': '../Scripts/jquery-2.1.4', 'knockout': '../Scripts/knockout-3.3.0' }, shim: { } }); |
我的FirstTest.Js代码:
1 2 3 4 5 6 7 8 9 10 11 | define(['project/modules/Settings/Subscriber/Viewmodels/Channels'], function (nChannel) { describe("Get Channels", function () { it("will check the Get Channels call and result", function () { var disp = nChannel.getChannels().then(function () { var actualResult = ko.toJS(nChannel.Channels); expect(actualResult.length).toEqual(3); }); }); }); }); |
ViewModel代码:
1 2 3 4 5 6 7 8 9 10 11 12 | define(['plugins/dialog'], function (dialog) { var subscriberList = ko.observableArray(); //Getting Error here - while loading the Js for Unit Testing var JsQ = $; //Getting JQUERY members here. // Works good. //Other Logics goes here return { subscriberList : subscriberList, JsQ : JsQ }; }); |
Jquery的配置工作完美,因为敲除也与此相同。但是给出错误。
任何想法/错误提示的建议?
我需要分别加载ko(淘汰赛)吗?
编辑1:
我尝试将
编辑2:
当我应用此解决方案时,我面临的问题是,那些现有的代码文件需要进行大量更改,并且文件数为数百。从
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | requirejs.config({ paths: { 'text': '../Scripts/text', 'durandal': '../Scripts/durandal', 'plugins': '../Scripts/durandal/plugins' } }); define('jquery', [], function () { return jQuery; }); define('knockout', [], function () { return ko; }); |
因此在任何viewmodel中,我们都可以获取
但是当我在Chutzpah声明中尝试相同的方法时,这将无法正常工作。不知道为什么。
希望您能理解问题。
在问题中显示的两个模块中,都使用
1 | define(['knockout', 'plugins/dialog'], function (ko, dialog) { |