javascript—逐步测试不断变化的数据的最佳方法

blmhpbnm  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(377)

我要测试的代码的目的是通过使用树解析数学表达式。因此,我想到以渐进的方式进行测试,慢慢地建立一棵树,并在每次操作后进行测试,类似这样:

TreeBuilder.addNode(small, "A=B*C");
it("should return 0 due to using default values", () => {
    expect(small.getValue("A")).to.equal(0);
});

TreeBuilder.changeValue(small, "B", 2);
TreeBuilder.changeValue(small, "C", 3);

it("should update parent value after changing leaves", () => {
    expect(small.getValue("A")).to.equal(6);
});

以此类推——细节无关紧要,但你知道了。现在,很明显,这不起作用,因为“it”之外的所有语句都会立即执行,所以我不能进行这样的“渐进测试”。
当然,我可以为每个测试使用不同的数据对象,但我不喜欢这种解决方案,因为那样会很麻烦。
所以我的问题更多的是一个最佳实践,而不是具体的代码:如何最好地测试在多个函数调用中逐步发展的行为?

23c0lvtd

23c0lvtd1#

最佳实践是使每个测试相互独立(如@pascalpuetz所说),但要想做你想做的事情,你可以使用mocha before功能:

describe("parser", () => {
    var shared_var;

    before(() => {
        // setup code here
        shared_var = ....
    });

    it("should ...", () => {
       expect(shared_var).to...
    });

    it("should ...", () => {
       expect(shared_var).to....
    });

});

相关问题