【问题标题】:how do I run a single test from the command line using jasmine 2.0如何使用 jasmine 2.0 从命令行运行单个测试
【发布时间】:2014-09-28 05:35:58
【问题描述】:

正如标题所说,我想运行一个测试,而不是整个规范。我尝试过的天真方法是使用这样的案例:

describe("MyCase",function() {
    it("has a test",function() {
        expect(something).toBe(something);
    }

    it("has another test",function() {
        expect(something_else).toBe(something_else);
    }
}

这保存在一个名为 MyCase.spec.js 的文件中(如果这很重要)。我原以为可以使用命令行中的以下命令只运行第一个案例:

jasmine-node --match="MyCase has a test"

但这显然不是这样做的方法。那么它是如何实现的呢?

谢谢!

【问题讨论】:

    标签: jasmine jasmine-node


    【解决方案1】:

    它可能是相当老的频道,但它会帮助那些正在寻找使用 jasmine 2.0 运行特定测试用例的人。使用“fdescribe”运行特定套件并使用“fit”运行特定规范。这将跳过除标记外的所有其他测试。

    请留意,不要提交 fdescribe 和适合 repo。这里 f 描述了“焦点”。

    对于较低的版本,我们可以使用 ddescribe,如上答案中所述。

    【讨论】:

    • 花了我一段时间才找到这个,谢谢。烦人的 .only() 和 'iit' 不起作用。
    【解决方案2】:

    iit 更改 it 并照常运行测试。 因此只有这个测试会运行,其他的都会被忽略。

    例如

    iit('should run only this test', function () {
        //expect(x).toBe(y);
    });
    

    同样适用于 describe 块,只需将其重命名为 ddescribe

    您也可以通过将 it 重命名为 xit 来忽略单个 it 测试

    xdescribe 也可以使用

    【讨论】:

    • 这是一个非常糟糕的解决方案。每次我想隔离测试时更改测试,就像运行我所有的测试一样乏味/缓慢。在我看来,这是一种不好的做法
    【解决方案3】:

    不确定它是否适用于 jasmine-node,但使用 ts-node 和 Jasmine 的节点模块路径,我可以使用过滤器标志来匹配规范的字符串。对我来说它看起来像:

    ts-node node_modules/jasmine/bin/jasmine --filter="employees*"
    

    这将匹配“describe”块中以“employees”开头的所有“it”块。

    【讨论】:

      【解决方案4】:

      这可能不是您所需要的,但我想建议使用 karma / karma-jasmine。 在 Karma 中,Jasmine 被“打补丁”并提供了额外的 ddescribe 和 iit 方法。如果您将其中一个套件重命名为 ddescribe 或将您的一个规范重命名为 iit(优先于 ddescribe),则只会执行此套件或规范。关于您的问题,您可以将您的第一个规范重命名为 iit,然后只执行该规范。当然,这仅在开发规范时有用。

      这样做的一个缺点是,很容易最终只有一小部分测试套件被长时间测试。所以不要忘记将它重命名回通常的版本(没有双 d,没有双 i)。

      【讨论】:

        猜你喜欢
        • 2014-02-18
        • 2012-03-06
        • 2011-04-25
        • 2014-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多