我有一个require控制器文件,该文件将Backbone模型和视图定义到其结构中,然后利用该模型的所有不同功能,调用其相应的Rest Web Service调用。以下是我的控制器的结构:-
define([ 'core/libs', 'modules/test/mapping/models/TestModel' ], function(libs, TestModel) {
var testModel = TestModel.testModel;
testModel.on("executeSimulatorButton", function() {
$("#simulatorMessage").html("Executing simulator ...");
testModel.get("executeSimulator").set("endDate", $("#datepickerReportingEnd").datepicker().val());
testModel.get("executeSimulator").set("startDate",$("#datepickerReportingStart").datepicker().val());
testModel.get("executeSimulator").invokeGet();
});
testModel.get("executeSimulator").on("update", function() {
$("#simulatorMessage").html(testModel.get("executeSimulator").get("value"));
});
testModel.on("truncateSimulatorButton", function() {
$("#simulatorMessage").html("Truncating simulator results...");
testModel.get("truncateSimulator").invokePost();
});
testModel.get("truncateSimulator").on("update", function() {
$("#simulatorMessage").html(testModel.get("truncateSimulator").get("value"));
});});
在我的茉莉花规格文件中,我包括了这样的控制器-
define(
[ 'modules/test/mapping/controllers/TestController','modules/test/mapping/models/TestModel'],
function(controller,TestModel) {
describe("TestController :", function() {
it("should create an test instance", function() {
console.log("testcontroller: " + controller);
expect(controller).not.toBe(null);
});
});
describe("TestController :", function() {
it("should test testModel instance", function() {
var testModel=TestModel.testModel;
expect(testModel.on("executeSimulatorButton",jasmine.any(Function))).toBeDefined();
});
});
});
上面的代码没有引发任何错误,但是 executeSimulatorButton 的部分没有被控制器覆盖。我无法在茉莉花测试中直接使用控制器变量,因为console.log正在打印 undefined 代替[Object object]。 我发现了许多有关AngularJS的解决方案,但是由于我没有使用Angular,所以我不知道如何测试控制器。 使用茉莉花测试这种类型的控制器并获得代码覆盖率的方法是什么?