在SAPUI5-sinon

时间:2018-02-04 18:13:54

标签: sapui5 sinon

我正在使用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()的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

答案很简单:sap.ui.base.ManagedObject没有方法byId。这是sap.ui.core.mvc.View的方法。只需在View中创建一个ManagedObject而不是beforeEach,您就可以了。

BR 克里斯