在茉莉花测试中定义requirejs控制器给出未定义

时间:2019-01-30 06:42:13

标签: javascript controller jasmine requirejs karma-jasmine

我有一个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,所以我不知道如何测试控制器。 使用茉莉花测试这种类型的控制器并获得代码覆盖率的方法是什么?

0 个答案:

没有答案