5

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

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"

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

谢谢!

4

4 回答 4

5

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

密切关注,不要提交 fdescribe 并适合回购。这里 f 描述了“焦点”。

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

于 2016-10-25T07:20:37.720 回答
4

iit更改并像往常一样运行您的测试。因此,只有这个测试将被运行,而所有其他的都将被忽略。

例如

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

describe块的工作原理相同,只需将其重命名为ddescribe

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

xdescribe可以

于 2014-11-17T15:43:01.713 回答
2

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

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

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

于 2020-08-12T15:03:38.783 回答
0

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

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

于 2014-09-29T19:45:02.710 回答