继续重构
增加测试
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(); }); });