2016-12-28 5 views
0

Я хочу вставить в клиент базы данных конструктора, но когда я запускаю тесты, исключение mocha throw, этот метод whitch называется не функцией.Sinon не издевательский метод

export class CustomService { 
    constructor(database: any) { 
     database.init().then((res)=>{})); 
    } 
} 


describe('CRUD service',()=>{ 
    it('when i decide save item',()=>{ 
     let db = sinon.mock(new DatabaseService);  

     let instance = new CustomService(db); 
     db.expects('init').once(); 
     db.verify(); 
    }); 
}); 

В консоли:

TypeError: database.init is not a function

Что не так?

+0

это может быть не ответ, но круглый кронштейн отсутствует в 'new DatabaseService' – PunNeng

ответ

1

Не сдаст возвращаемого значения из sinon.mock в код, который вы тестируете, но вместо того, чтобы передать исходный объект вы передаёте sinon.mock. Возвращаемое значение sinon.mock предназначено только для установки утверждений и их проверки. Вам также необходимо установить порядок инструкций в своих тестах, чтобы ожидания были установлены до, код, который должен их удовлетворить, запускается. Что-то вроде этого:

describe('CRUD service',()=>{ 
    it('when i decide save item',()=>{ 
     const db = new DatabaseService(); 
     let mock = sinon.mock(db);  

     mock.expects('init').once(); 
     let instance = new CustomService(db); 
     mock.verify(); 
    }); 
}); 
Смежные вопросы