2012-05-12 32 views
46

Tôi đang sử dụng mocha để kiểm tra đơn vị javascript ngay bây giờ.Toàn cầu `trước` và` beforeEach` cho mocha?

Tôi có một số tệp thử nghiệm, mỗi tệp có beforebeforeEach, nhưng chúng hoàn toàn giống nhau.

Làm cách nào để cung cấp toàn cầu beforebeforeEach cho tất cả chúng (hoặc một số trong số chúng)?

Trả lời

26

Khai báo một before hoặc beforeEach trong một tệp riêng biệt (tôi sử dụng spec_helper.coffee) và yêu cầu nó.

spec_helper.coffee

afterEach (done) -> 
    async.parallel [ 
    (cb) -> Listing.remove {}, cb 
    (cb) -> Server.remove {}, cb 
    ], -> 
    done() 

test_something.coffee

require './spec_helper' 
+0

bạn có thể giải thích một chút, điều gì đang xảy ra ở đó không? – Gobliins

64

Trong thư mục gốc của thư mục kiểm tra, tạo ra một thử nghiệm helper toàn cầu test/helper.js trong đó có trước khi bạn và beforeEach

// globals 
global.assert = require('assert'); 

// setup 
before(); 
beforeEach(); 

// teardown 
after(); 
afterEach(); 
+8

Bạn không cần phải yêu cầu nó một cách rõ ràng. Trong thực tế, nó sẽ ném một lỗi vì trước đây, beforeEach, vv sẽ không tồn tại trong bối cảnh cần thiết. Miễn là nó được bao gồm trong thư mục kiểm tra, mã sẽ được thực hiện trước bất kỳ thử nghiệm nào. – khoomeister

+1

cảm ơn @khoomeister đã dành cho một phiên bản cũ! cập nhật – AJcodez

+1

Tôi sử dụng, rất đẹp, nhưng tôi tự hỏi nơi để tìm tài liệu về nó? – Zlatko

-1

Việc sử dụng mô-đun có thể giúp việc thiết lập/rách toàn cầu dễ dàng hơn bộ thử nghiệm của bạn. Dưới đây là một ví dụ sử dụng RequireJS (module AMD):

Đầu tiên, hãy định nghĩa một môi trường thử nghiệm với việc thiết lập toàn cầu của chúng tôi/teardown:

// test-env.js 

define('test-env', [], function() { 
    // One can store globals, which will be available within the 
    // whole test suite. 
    var my_global = true; 

    before(function() { 
    // global setup 
    }); 
    return after(function() { 
    // global teardown 
    }); 
}); 

Trong Á hậu JS của chúng tôi (bao gồm trong Á hậu HTML mocha, cùng người kia libs và các tập tin kiểm tra, như một <script type="text/javascript">…</script>, hoặc tốt hơn, như là một tập tin JS bên ngoài):

require([ 
      // this is the important thing: require the test-env dependency first 
      'test-env', 

      // then, require the specs 
      'some-test-file' 
     ], function() { 

    mocha.run(); 
}); 

some-test-file.js thể được thực hiện như thế này:

// some-test-file.js 

define(['unit-under-test'], function(UnitUnderTest) { 
    return describe('Some unit under test', function() { 
    before(function() { 
     // locally "global" setup 
    }); 

    beforeEach(function() { 
    }); 

    afterEach(function() { 
    }); 

    after(function() { 
     // locally "global" teardown 
    }); 

    it('exists', function() { 
     // let's specify the unit under test 
    }); 
    }); 
}); 
Các vấn đề liên quan