【问题标题】:Using jasmine the correct way or creating a testAll-spec以正确的方式使用 jasmine 或创建 testAll-spec
【发布时间】:2014-07-04 22:36:21
【问题描述】:

我不得不说我有点坚持以(很可能)稍微错误的方式使用 jasmine(-node)。目前我有茉莉花测试,所以它们需要以正确的顺序运行。我现在需要一个可以按正确顺序收集和启动不同 jasmine 文件的文件。

现在我很欣赏建议,这些建议向我展示了使测试正常工作的其他方法,并且不一定只是解决这个直接的问题,我的测试技能相当有限,主要是因为作为一个长期的独立编码器,我没有这样对他们很有用。

所以实际的问题是我有测试规范:

  1. mapGenerator-spec.js //初始化/生成一个干净的地图。
  2. orders-spec.js // 模拟玩家下达的命令(基于回合)
  3. map-spec.js // 测试前端和后端使用的部分,从组件创建地图
  4. moveOrders-spec.js // 通过解析命令生成部分回合 -> 移动单位。

所以简单来说,游戏中的逻辑就是先生成地图,命令生成玩家给出的命令

这些需要以精确的顺​​序执行,因为它们会创建依赖于先前测试的数据库条目。我想尽可能地保持测试为产品就绪/真实,而不是尝试跳过数据库插入/获取。有一个单独的测试数据库,用于生成测试。

那么您能否建议我,您认为正确的方法是什么(如果这不是一个好方法)和/或建议我,如果需要,我如何将这些测试总结为一个集合测试“testAll -spec.js",它将同步运行测试。

【问题讨论】:

    标签: javascript node.js jasmine


    【解决方案1】:

    如果您需要在运行测试之前发生一些事情,那么您应该使用 beforeEach()。

    您还可以嵌套 jasmine 测试,并在每个测试中运行 beforeEach(),如下所示:

    describe('testInitialiser', () => {
        var firstVariable;
        beforeEach(() => {
            firstVariable = 1;
        });
        it('should set firstVariable to 1', () => {
            expect(firstVariable).toBe(1); 
        });
        // this is a nested test - these tests will run after the above beforeEach.
        describe('nested test ', () => {
            // all tests within this describe will have access to firstVariable.
            var secondVariable;
            beforeEach(() => {
                secondVariable = firstVariable + 1;
            });
            it('should set secondVariable to firstVariable + 1 ', () => {
                expect(secondVariable).toBe(2); 
            });
        });
    });
    

    希望这会有所帮助。

    【讨论】:

    • 问题是我有 4 个(或更多)单独的测试规范。我可以按正确的顺序单独运行它们并让测试通过。他们都使用数据库并且没有以任何方式真正地被嘲笑。我需要基本上将它们组合起来,以便我可以轻松地以正确的顺序运行测试,或者有办法让它们不相互独立。后者有点难,因为我需要在每个测试中分别启动数据库和以前的测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2014-06-23
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多