2015-09-15 17 views
5

Tôi muốn một số trợ giúp để xác định lý do thử nghiệm đơn vị của tôi trong ứng dụng sails.js không hoạt động như mong đợi.Lời hứa Bluebird mỗi thử nghiệm mocha/chai không hoạt động

Tôi đang sử dụng thư viện lời hứa mocha, chai và bluebird trên ứng dụng sails.js.

Những gì tôi muốn đạt được:

  • Tạo một thử nghiệm cho phương pháp TagsService.create (tên), mà chấp nhận một tên tham số.
  • Kiểm tra rằng phương pháp này sẽ không tạo ra một kỷ lục thẻ mới dựa trên tên không hợp lệ tôi vượt qua
  • Tham số tên được yêu cầu và nên dài ít hơn 121 ký tự

Những gì tôi hiện có:

// Test the 'create' method 
 
describe('Method \'create\' test result: \n', function() { 
 
    
 
    // Test that name is required and less than 121 chars long 
 
    it('Must receive the name parameter and be less than 121 chars long', function(done) { 
 
\t \t 
 
    // It should not accept any of the following names 
 
    var names = ['',' ','thisstringislongerthanthemaxof121characterslongthisstringislongerthanthemaxof121characterslongthisstringislongerthanthema',[],[{}],[{test: 'test'}],'wrongchars*[]$£%fsf','$%@~}[','£$%jkdfi',' $%"£asdwdFDE','hD8U £$&{DS ds']; 
 
    
 
    
 
     sails.bluebird.each(names,function(name){ 
 
     TagsService.create(name).then(function(data){ 
 
      assert.propertyVal(data,'status','err','An error was NOT returned - even though names provided should be invalid'); 
 
     }); 
 
     }).then(function(){ 
 
     done(); 
 
     }); 
 
    
 
\t \t 
 
    }); 
 
    
 
});

gì xảy ra là nó dường như vượt qua, ngay cả khi tôi chuyển vào một tên hợp lệ hoặc trả về null từ phương thức.

Trả lời

5

Vâng, có vẻ như tôi đã xoay sở để giải quyết nó, sau nhiều lần dùng thử và lỗi.

Hóa ra, tôi cần nắm bắt cuộc gọi được thực hiện() từ Lời hứa sau mỗi phương thức được thực thi. Cũng cần thiết để trả lại kết quả của các thử nghiệm được thực hiện từ đối tượng lời hứa TagsService. (Vẫn không chắc chắn 100% đây là cách chính xác để suy nghĩ về nó ..). Dù sao thì thử nghiệm dường như hoạt động đúng cách ngay bây giờ.

Dưới đây là kết quả của tôi:

var names = ['',' ','thisstringislongerthanthemaxof121characterslongthisstringislongerthanthemaxof121characterslongthisstringislongerthanthema',[],[{}],[{test: 'test'}],'wrongchars*[]$%fsf','$%@~}[','�$%jkdfi',' $%"�asdwdFDE','hD8U �$&{DS ds']; 
 
\t \t \t 
 
sails.bluebird.each(names, function(name){ 
 
    return TagsService.create(name).then(function(data) { 
 
\t assert.property(data, 'status', 'create method did not return a status property'); 
 
\t assert(data.status === 'err', 'even with an invalid name parameter passed - it did not return an err status, which it must do with an invalid name.'); 
 
    }); 
 
}).then(function(){ 
 
\t done(); 
 
}).catch(done);

+0

Xem thêm https://github.com/domenic/chai-as-promised –

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