如何使用jasmine 2.0从命令行运行单个测试

时间:2014-09-28 05:35:59

标签: jasmine jasmine-node

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

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 个答案:

答案 0 :(得分:5)

使用 iit 更改 并像往常一样运行测试。 因此,只会运行此测试而忽略所有其他测试。

E.g。

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

描述块同样适用,只需将其重命名为 ddescribe

此外,您可以通过将 it 重命名为 xit

来忽略单个 it 测试

xdescribe 也适用

答案 1 :(得分:4)

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

留意并且不要提交fdescribe并且适合回购。这里描述"焦点"。

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

答案 2 :(得分:0)

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

这方面的缺点是,人们很容易最终只能测试一小部分测试套件。因此,不要忘记将其重命名为通常的版本(没有双d,没有双i)。

答案 3 :(得分:0)

不确定是否适用于jasmine-node,但是使用ts-node和Jasmine的node modules路径,我可以使用filter标志来匹配规范的字符串。对我而言,它看起来像:

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

这将匹配以'员工'开头的'描述'块中的所有'it'块。