我正在尝试测试下面附带的'onInit'功能:
function (jQuery, Controller, JSONModel) {
"use strict";
var controls;
var mainController = Controller.extend("tool.controller.Main", {
onInit: function(oEvent) {
var inputModel = new JSONModel("./model/inputs.json");
var productsModel = new JSONModel("./model/products.json");
this.getView().setModel(inputModel, "inputModel");
this.getView().setModel(productsModel);
controls = viewControls.main.apply(this);
},
...
目标
特别是对于这个函数,我只需要测试调用'setModel'和'main'方法。
我面临的问题
为了将这个'onInit'函数正确地进行单元测试,我需要使用stub / mock进行一些依赖。具体来说,这些依赖关系将如下:
'此'关键字/对象附加了'getView'方法
'JSONModel'对象构造函数
我坚持理解如何模仿上述内容。以下是我初学者对Sinon.js的理解:
QUnit.test("'onInit' Function Test", function(assert) {
// Arrange
var JSONModel = sinon.stub();
var inputModel = sinon.stub();
var productsModel = sinon.stub();
//spies- what methods are we asserting get called?
var setModel = sinon.spy();
var main = sinon.spy()
//stubs- what dependencies are we 'faking'
sinon.stub(this, 'getView').returns({setModel});
// Act
mainController.onInit();
// Assert
assert.ok(setModel.called, "setModel called");
assert.ok(main.called, "setModel called");
});
我很确定有更好的方法,因为这可能是完全错误的策略。当我完整地学习单元测试时,您的建议将非常受欢迎。如果有帮助,这是我得到的错误: