2012-07-13 38 views
13

Tôi đã cố gắng để thử nghiệm tạo ra/xóa hậu quả của các mục (trong mongoDB qua mongoose).Jasmine (mocha) lồng nhau "nó" kiểm tra

Vấn đề tạo không đồng bộ và trả về ID của mục được tạo trong chức năng gọi lại, tôi cần ID này cho mục đã tạo, vì vậy tôi đã thử mã sau cho mocha (theo nhiều cách khác nhau) nhưng không hoạt động.

describe('Item Model', function(){ 

    it('should be able to create item', function(done){ 
    var item = new Item({name: {first: "Alex"}); 
    item.save(function(err, data){ 

     it('should be able to deleted created item', function(done){      
     Item.delete({_id: data.id}, function(err, data){ 
     done(err); 
     }); 
     }); 

    }) 
    }); 

}); 

Thử nghiệm này có thể được thực hiện bằng mocha hoặc hoa nhài không?

Trả lời

7

Tôi sẽ có hai thử nghiệm cho điều đó. Một trong đó là thử nghiệm chèn và một trong đó kiểm tra loại bỏ.

nên trông giống như thế này trong coffeescript

describe 'Item model',() -> 
    item = '' 
    before (done) -> 
     item = new Item {name: {first: "Alex"}} 
     done 
    describe 'When inserting Item',() -> 
     before (done) -> 
      item.save done 
     it 'should have been insterted' -> 
      #CHECK HERE IT IF IT IS INSERTED 

    decribe 'when deleting',() -> 
     before (done) -> 
      item.save (err,data) -> 
       return done err if err 
       Item.delete {_id: data.id}, done 
     it 'should have been deleted' -> 
      #CHECK HERE IT IF IT IS Deleted 
+0

Ok, tôi sẽ thử. Cảm ơn bạn. – WHITECOLOR

+15

Tôi vẫn muốn nếu điều lồng nhau có thể được thực hiện. – Zlatko

+45

Thực tiễn không tốt là trả lời các câu hỏi JavaScript bằng các câu trả lời của CoffeeScript. Tôi thích CoffeeScript, nhưng không phải tất cả các lập trình viên JS đều có thể đọc và hiểu nó. –

4

Xem vấn đề này: https://github.com/visionmedia/mocha/issues/438

Có vẻ rằng ý định là để buộc các xét nghiệm để được de-coupled. Trong khi bất tiện và có thể yêu cầu chế nhạo nhiều hơn, hành vi này rất hữu ích vì nó yêu cầu ít kiểm tra lại và cung cấp hình ảnh rõ ràng hơn về chính xác những gì đang xảy ra.

ví dụ: có 2 bài kiểm tra, thử nghiệm A và thử nghiệm B, trong đó B là phụ thuộc vào A.

thử nghiệm Một phá vỡ, B do đó phá vỡ là tốt. Bạn sửa chữa những gì đang phá vỡ thử nghiệm A, nhưng bây giờ có thể ngạc nhiên khi thấy rằng thử nghiệm B đã phá vỡ hoặc trong quá trình sửa chữa của bạn, hoặc vì một lý do không liên quan.

Khi kiểm tra không dựa vào nhau, bạn có thông tin tốt hơn và ít ngạc nhiên hơn.

Các vấn đề liên quan