我無法讓我的茉莉花測試文件從我的knockoutjs文件中獲取數據。我能夠創建knockout observables並在spec文件中測試它們,但不能測試其他文件。出於某種原因,當我嘗試訪問來自viewmodel.js文件的spec文件中的mainViewModel()
時,未找到它。我有所有requirejs文件包括/定義,但由於某種原因,它仍然無法正常工作。茉莉花測試knockout.js與requirejs
這裏是我的代碼:
viewmodel.js:
define(["knockout", "jquery"], function (ko, $) {
var data = {
Name:"The Plan",
Id: 1
};
var TestViewModel = function (data) {
var self = this;
self.planName = ko.observable(data.Name);
self.planId = ko.observable(data.Id);
return self;
}
function mainViewModel() {
var self = this;
self.plan = ko.observableArray([]);
self.plan.push(new TestViewModel(data));
}
return mainViewModel;
});
someSpec.js文件:
define(["knockout", "jquery"], function (ko, $) {
describe("MyTestSpec", function() {
var viewmodel, data;
beforeEach(function() {
require(["knockout", "jquery", "testsViewModel"], function(ko, $, tvm){
viewmodel = tvm.mainViewModel();
});
});
it("should be able to connect to View Model file", function() {
expect(viewmodel.Id).toBe(1);
});
});
});
index.html文件:
<script type="text/javascript" src="Scripts/jasmine.js"></script>
<script type="text/javascript" src="Scripts/jasmine-html.js"></script>
<script type="text/javascript" src="Scripts/boot.js"></script>
<script type="text/javascript" src="Scripts/require.js"></script>
<script type="text/javascript">
require.config({
paths: {
"jquery": './Scripts/jquery-1.10.2.min',
"knockout": './Scripts/knockout.debug',
"testViewModel" :"./Scripts/viewmodel",
}
});
// list spec files here
require(["knockout","jquery","specs/someSpec", "testViewModel"], function() {
window.onload();
});
</script>
偉大的建議,它的一些額外的修復工作。 'mainViewModel()'沒有返回任何東西,所以聲明的變量/函數是私有的,可以通過someSpec.js訪問。我剛剛添加'返回TestViewModel(數據)'以及您的建議,它工作正常。 –
@FahadJameel我正在用knockout和requirejs進行測試。我發現嘲笑requirejs使用的依賴關係令人費解。你是如何解決這個問題的? – user2829759