如何在多个文件中构建BDD样式测试?

时间:2014-11-23 14:04:35

标签: jasmine mocha karma-runner

如何将BDD样式(摩卡,茉莉等)大包装单describe()分解为多个文件。我有一个5,000行的单元测试文件,所有这些都包含如下:

describe('services',function(){
  describe('serviceA',function(){...});
  describe('serviceB',function(){...});
  describe('serviceC',function(){...});
  describe('serviceD',function(){...});
  // .....
  describe('serviceN',function(){...});
});` 

为了理智,我想打破每一个(' serviceA',' serviceB',...,' serviceN')它自己的文件。但是我希望每个人都在describe("services")里面。

我看到了两种方法:

  • 在父母中使用require:describe('serviceA',require('./services/serviceA'));(重复多次)
  • 有一些包装器包含所有

我不喜欢第二种方法,因为它需要大量保留文件名,require()describe()同步(因此违反了DRY)。

我更喜欢每个文件知道它正在测试的内容,而不必显式添加路径,而只是让testrunner智能地包含'./services'中的所有内容,因此内部{{ 1}}:

serviceA.js

然后我需要一些方法来"包裹" ' serviceA'内部'服务'。有没有办法做到这一点?

在这种情况下,我正在通过业力测试角度应用程序,但概念是相同的。

1 个答案:

答案 0 :(得分:1)

Jasmine的describe对于加载文件没有特殊意义。这是一个描述符。什么阻止你这么做?

Karma配置:

files: [
    'src/services/**/*.js',
    'tests/services/**/*.js'
]

serviceA.spec.js

describe('services', function () {
    describe('serviceA', function () {

    });
});

serviceB.spec.js

describe('services', function () {
    describe('serviceB', function () {

    });
});