我开始为我的 js 代码编写单元测试,我是这方面的新手。我们使用 knockout.js 并且需要为项目测试我们的视图模型。
这是示例:
任务.js 文件
var yc = yc || {};
yc.TasksVM = function (options) {
_addTask = function () {
yc.AddTask.openDialog();
},
_paging = myc.PagingVM();
_instance = {
addTask: _addTask,
paging: _paging,
};
return _instance;
}
和 AddTask.js 文件
var yc = yc || {};
yc.AddTaskVM = function (options) {
var
_openDialog = function (orderId) {
$.ajax({
data: data, type: 'get', url: dialogUrl,
success: function (dialogContent) {
// ...
}
});
};
_instance = {
openDialog: _openDialog
};
return _instance;
}
当我尝试使用 Jasmine 测试 TasksVM 时,我遇到了需要实例化 yc.AddTask.openDialog()
调用的问题openDialog()
。我还需要将此文件包含在<script>
标签中才能接听电话。然后,在yc.AddTask.openDialog
我需要模拟 $.ajax
调用(并且还包括我的 html 中的 jQuery)。
我的问题是关于耦合。
1.yc.AddTask.<my_function>
从里面打电话可以yc.TasksVM
吗?
在.NET 世界中,我们通过接口处理这个问题。我们去掉所有外部依赖,只在源代码中使用接口。所以我们可以在我们正在测试的代码中模拟任何东西。
2.我需要将所有这些依赖文件包含到我的 html 文件运行器中吗?