2017-12-27 44 views
0

user.test.js内のuser.service.jsのメソッドをテストするためにユニットテストケースを作成していますが、テストケースの数が増えるとこのエラーが発生します: "Error:Timeout非同期テストとフックの場合、 "done()"が呼び出されていることを確認し、プロミスを返す場合は解決することを確認してください。 "2000msのタイムアウトを超えました。非同期テストとフックでは、 "done()"が呼び出されていることを確認してください。プロミスを返す場合は、解決することを確認してください。

ここで私は最低限必要なファイルへのplunkerリンク付けしています:

https://plnkr.co/edit/3us5ja?p=info

describe('testing', function() { 
describe('random test cases 1', function() { 
    it('Get all contacts 1', function() { 
      return contactService.getAll((result) => { 
       //console.log('all contact data: ' + 
JSON.stringify(result)); 
      }); 
    }); 
    it('Get all contacts 2', function() { 
     return contactService.getAll((result) => { 
      //console.log('all contact data: ' + JSON.stringify(result)); 
     }); 
    }); 
    it('Get all contacts 3', function() { 
     return contactService.getAll((result) => { 
      //console.log('all contact data: ' + JSON.stringify(result)); 
     }); 
    }); 
}); 

describe('random test cases 2', function() { 
    it('Get all contacts 21', function() { 
     return contactService.getAll((result) => { 
      //console.log('all contact data: ' + JSON.stringify(result)); 
     }); 
    }); 
    it('Get all contacts 22', function() { 
     return contactService.getAll((result) => { 
      //console.log('all contact data: ' + JSON.stringify(result)); 
     }); 
    }); 
    it('Get all contacts23', function() { 
     return contactService.getAll((result) => { 
      //console.log('all contact data: ' + JSON.stringify(result)); 
     }); 
    }); 
}); 

describe('random test cases 3', function() { 
    it('Get all contacts 31', function() { 
     return contactService.getAll((result) => { 
      //console.log('all contact data: ' + JSON.stringify(result)); 
     }); 
    }); 
    it('Get all contacts 32', function() { 
     return contactService.getAll((result) => { 
      //console.log('all contact data: ' + JSON.stringify(result)); 
     }); 
    }); 
    it('Get all contacts 33', function() { 
     return contactService.getAll((result) => { 
      //console.log('all contact data: ' + JSON.stringify(result)); 
     }); 
    }); 
}); 
}); 

のファイルの一部はここでは関係ありません。私が試したことは、次のとおりです。

1)すべてのテストケースでタイムアウトがオーバーライドされ、テストケースが少なくても同じ問題に直面しています。

2)すべてのテストケースでdone()を呼び出しました。

3)package.jsonに記載されているコマンド行で、タイムアウトを設定しました。

私はDAOから約束を返す。ですから、約束が解決されたら、私たちは予測できません。また、テストケースの順序も予測できないため、テストスイートまたは個別のテストケースについてもタイムアウトを増やすことはできません。他のサービスのテストケースもいくつかあります。だから、この問題を解決する方法はありますか?

答えて

-1

それぞれの場合にコールバックを渡す必要があります。問題を解決します。

it('creates a user', function(done) { 
    var user = { 
     id: null, 
     name: 'abc', 
     email: '[email protected]', 
     phoneNo: 8978567438, 
     picUrl: 'nilu', 
     description: 'SI', 
     status: 'active', 
     waitingTime: 10, 
     rating: 7 
    }; 
    new Promise((resolve, reject) => { 
     return userService.register(user, (res) => { 
     //log.info('value after insert: ' + JSON.stringify(res)); 
     //expect(res.id).to.be.greaterThan(0); 
     //expect(result.name).to.equal(user.name); 
     //userService.delete(res.id, (res) => {}); 
     }).then((result) => { 
     //expect(result.id).to.be.greaterThan(0); 
     log.info('user value after insert: ' + JSON.stringify(result)); 
     //userService.delete(result.id, (result) => {}); 
     resolve(); 
     }); 
    }).then(() => done()); 
}); 

なぜここでサイロンを使用していませんか?

あなたはsinon.stubを使用しない場合、あなたは私がここで例を掲載している

describe('userDao', function() { 
    this.timeout(3000) 

後にタイムアウトをincreateする必要があります。https://delwar20.wordpress.com/2017/12/29/using-sinon-to-stub-mongoose-calls-and-return-promise/

が、それはあなた

+0

私を助けることを願っていますここに例を投稿してください。それがあなたを助けることを願っています:https://delwar20.wordpress.com/2017/12/29/using-sinon-to-stub-mongoose-calls-and-return-promise/ – Delwar

関連する問題