继续重构

增加测试

describe("测试AClass", function () {
    it("子类全部实现抽象父类的抽象成员时,不抛出异常", function () {
        var A = YYC.AClass({
            Init: function (t) {
                this.a = t;
                this.b = 2;
            },
            Public: {
                p: function () {
                    return 0;
                }
            },
            Private: {
                _m: 1
            },
            Protected: {
                P_h: function () {
                    return this._m;
                },
                P_k: 3
            },
            Abstract: {
                move: function () { },
                u: 0,
                t: function () { }
            }
        });
        var B = YYC.Class(A, {
            Init: function () {
                this.b = 100;
                this.base(200);
            },
            Public: {
                move: function () {
                    return this.P_h();
                },
                t: function () { },
                u: 20
            }
        });
        var C = YYC.Class(B, {
            Public: {
                move: function () {
                    var baseResult = this.base();

                    return baseResult;
                },
                t: function () { }
            }
        });

        var b = new B();
        var c = new C();

        expect([b.a, b.b]).toEqual([200, 2]);
        expect([b.p(), b.move(), b.u]).toEqual([0, 1, 20]);
        expect(c.move()).toEqual(1);
    });
});

describe("测试Interface", function () {
    it("子类没有全部实现了接口方法和属性,抛出异常", function () {
        var Int = YYC.Interface("A", "B");

        expect(function () {
            YYC.AClass({ Interface: Int }, {
                Public: {
                    B: function () { }
                }
            });
        }).toThrow();

        var Int2 = YYC.Interface(Int, ["C"], ["a"]);

        expect(function () {
            YYC.AClass({ Interface: Int2 }, {
                Public: {
                    A: function () { },
                    B: function () { },
                    C: function () { }
                }
            });
        }).toThrow();
        expect(function () {
            YYC.AClass({ Interface: Int2 }, {
                Public: {
                    B: function () { },
                    C: function () { },
                    a: 1
                }
            });
        }).toThrow();
    });
});
View Code

相关文章:

  • 2021-04-01
  • 2021-06-26
  • 2017-11-29
  • 2019-02-10
  • 2021-11-25
  • 2020-05-24
  • 2021-08-29
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-02
  • 2021-10-27
  • 2021-10-09
  • 2021-12-28
  • 2021-11-03
相关资源
相似解决方案