代码之家  ›  专栏  ›  技术社区  ›  user8709724

按顺序运行Jasmine测试

  •  10
  • user8709724  · 技术社区  · 7 年前

    我正在使用Karma/Jasmine运行许多规范文件。我的测试使用了一些全局函数。一些测试模拟了全局函数,而其他测试则依赖于全局函数。由于测试是异步运行的,一些测试会失败,因为全局函数的预期行为会被其他测试更改。

    有没有办法按顺序运行测试?

    3 回复  |  直到 7 年前
        1
  •  7
  •   tbhaxor    5 年前

    在jasmine中将“random”设置为false。json

    应将文件添加到 spec/support/jasmine.json

        2
  •  4
  •   Tyler    7 年前

    我认为异步测试不会同时运行两个测试。这种副作用很可能发生,因为您在单个测试结束后没有重置全局函数。如果在每次测试之后都不恢复全局函数,并且运行的下一个测试(可能是套件中的任何单个测试)如果依赖于相同的函数,则可能会失败。

    例如(使用sinon)

    describe("A suite", function() {
        beforeEach(function() {
          sinon.stub(someGlobal, 'someFunc')
        });
    
        afterEach(function() {
          someGlobal.sumFunc.restore()
        })
    
        it("uses global function", function() {
          ...
        });
    });
    

    *但是,您可以在jasmine配置中将random设置为false,以便按顺序运行规范- https://jasmine.github.io/setup/nodejs.html .

        3
  •  0
  •   Arefe    3 年前

    旗帜 --random=false 将按顺序运行测试。我有实现这一目标的脚本:

    "test": "ENV=dev && db-migrate --env dev up && jasmine-ts --random=false && db-migrate reset --env dev",