【发布时间】:2018-02-04 18:13:54
【问题描述】:
我在 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 会导致消息“尝试将未定义的属性 byId 包装为函数”。 当我为 oViewStub 使用“sap/ui/core/mvc/View”时,找不到 getModel-stub。 (但这也会在 beforeEach 中出现错误:Cannot read property 'viewData' of undefined。)
存根视图及其方法 getModel() 和 byId() 的正确方法是什么?
【问题讨论】:
-
应该没问题。确保
this.oViewStub对象是sap.ui.core.mvc.View -
您的
viewStub是实际的sap.ui.core.mvc.View吗?也许提供更多的代码,尤其是。创建viewStub。此外,我建议使用沙箱:sinonjs.org/releases/v1.17.6/sandbox -
好的,下一步是使用沙箱,请注意。现在我只是使用破坏。我试过你的建议@cschuff。但我一定是在监督一些大事。我更新了我的问题。如果你能让我走上正轨就好了。