我正在使用SAPUI5中的sinonjs。但有些事情我无法理解。
QUnit.module("Validation of Betaalwijze", {
beforeEach : function () {
this.oMainViewController = new MainViewController();
this.oViewStub = new ManagedObject();
var data = {
IBANPrimair: "123",
IBANSecundair: "456",
Betaalwijze: ""
};
var oModel = new JSONModel(data);
var fakeBetaalwijzeField = new Input();
sinon.stub(this.oViewStub, "getModel").returns(oModel);
sinon.stub(this.oViewStub, "byId").returns(fakeBetaalwijzeField);
sinon.stub(this.oMainViewController, "getView").returns(this.oViewStub);
},
afterEach : function() {
this.oMainViewController.destroy();
this.oViewStub.destroy();
this.fakeBetaalwijzeField.destroy();
}
});
QUnit.test("Should set an ValueState Error", function (assert) {
// Arrange
//All preparation here above.
// Act
this.oMainViewController._validateInput();
// Assert
//TODO
});
当我为oViewStub使用“sap / ui / base / ManagedObject”时,getModel-stub工作正常。但在这种情况下,byId-stub会导致消息“尝试将未定义的属性包装为函数”。 当我对oViewStub使用“sap / ui / core / mvc / View”时,找不到getModel-stub。 (但是这也在beforeEach中给出了一个错误:无法读取未定义的属性'viewData'。)
查看View及其方法getModel()和byId()的正确方法是什么?
答案 0 :(得分:0)
答案很简单:sap.ui.base.ManagedObject
没有方法byId
。这是sap.ui.core.mvc.View
的方法。只需在View
中创建一个ManagedObject
而不是beforeEach
,您就可以了。
BR 克里斯