在SAPUI5 sinon中stubing byId()

在SAPUI5 sinon中stubing byId(),sapui5,sinon,Sapui5,Sinon,我在SAPUI5和sinonjs混在一起。但有些事情我想不通 QUnit.module("Validation of Betaalwijze", { beforeEach : function () { this.oMainViewController = new MainViewController(); this.oViewStub = new ManagedObject(); var

我在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存根工作得很好。但在这种情况下,byId存根会导致消息“试图将未定义的属性byId包装为函数”。 当我对OviewTub使用“sap/ui/core/mvc/View”时,找不到getModel存根。(但这在beforeEach中也会出现错误:无法读取未定义的属性“viewData”。)


什么是存根视图及其方法getModel()和byId()的正确方法?

答案非常简单:没有方法
byId
。这是一种方法。只需在每个之前在
中创建一个
视图
,而不是
管理对象
,就可以了


克里斯应该不会有任何问题。确保
this.oViewStub
对象是
sap.ui.core.mvc.View
您的
viewStub
是实际的
sap.ui.core.mvc.View
?可能会提供更多的代码,尤其是创建
viewStub
。此外,我建议使用沙盒:好的,下一步是使用沙盒,注意到。现在我只使用destroy。我试过你的建议@cschuff。但我一定是在监督一件大事。我更新了我的问题。如果你能让我走上正轨那就太好了。啊,非常感谢。我懂了。我把错误信息弄混了。