рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдХреЗрд╡рд╛рдИрд╕реА рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реВрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХреБрдЫ рднреА рдмреНрд░рд╣реНрдорд╛рдВрдбреАрдп рдирд╣реАрдВред рдЖрдкрдХреЛ рдмрд╕ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдХреА рдкреНрд░рддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕реЗрдЯ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдЗрдирдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВред
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рдПрдХ рджрд░реНрдЬрди рд╕рдорд╛рди рд╕рдВрдЪрд╛рд▓рди рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВред рдПрдХ рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдб рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ Request
рдЕрдореВрд░реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреВрдВрдЧрд╛:
describe('Request', () => { const Request = require('./Request'); it('execute should return promise', () => { const request = new Request(); request.execute().then((result) => { expect(result).toBeNull(); }); }); });
рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ? рд╢рд╛рдпрдж рдЕрдкреВрд░реНрдг, рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Request
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ
рд╣реИ рдЬреЛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде Promise
? рдЗрд╕рд╕реЗ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред рдореИрдВ рдХреЛрдб рд╕реНрдХреЗрдЪ рдХрд░реВрдВрдЧрд╛ рддрд╛рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
class Request { constructor(){} execute(){ return new Promise((resolve, reject) => { resolve(null); }); } } module.exports = Request;
рдореИрдВ npm test
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╣рд░реЗ рдмрд┐рдВрджреБ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВред
So. рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдиреБрд░реЛрдз рд╣реИ, рдФрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕реЗ рдХрд┐рд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рдбреЗрдЯрд╛ рдХрд┐рди рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдПрдХ рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛:
it('should configure request', () => { const options = { tableName: 'users', query: { id: 1 } }; request.configure(options); expect(request.options).toEqual(options); });
рдареАрдХ рд╣реИ? рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдХрд╛рдлреАред рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЛ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬреЛ request
рдЪрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ request
, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдЪрд░ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдХрд┐ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдиреБрд░реЛрдз рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рддрд╛рдЬрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛:
let request = null; beforeEach(() => { request = new Request(); });
рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдиреБрд░реЛрдз рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧ рдЖрд╡реГрддреНрддрд┐ рдЪрд░ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред
configure(options){ this.options = options; }
рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдм рдореБрдЭреЗ рджреЛ рд╣рд░реЗ рдбреЙрдЯреНрд╕ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдореЗрд░реЗ рджреЛ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реЗ рд╣реБрдПред рд╣рд╛рд▓рд╛рдВрдХрд┐ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рд╢рд╛рдпрдж рдпрд╣ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХрд┐рд╕ рдкрдХреНрд╖ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкрд░ рд▓реМрдЯреВрдВрдЧрд╛ рдФрд░ рдХреБрдЫ рдХреЛрдб рд▓рд┐рдЦреВрдВрдЧрд╛:
const DbMock = require('./DbMock'); let db = null; beforeEach(() => { db = new DbMock(); request = new Request(db); });
рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд░рдВрднреАрдХрд░рдг рдХрд╛ рдРрд╕рд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐:
- рдпрджрд┐, рдореЗрд░реЗ рдмрдЬрд╛рдп, рдореЗрд░реЗ рдХрд┐рд╕реА рд╕рд╣рдХрд░реНрдореА рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡реЗ рдХреБрдЫ рднреА рдХрд░ рд╕рдХреЗрдВ, рдЙрдиреНрд╣реЗрдВ MySQL рд╕рд░реНрд╡рд░ рдХрд╛ рдЕрдкрдирд╛ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдЦрд░реНрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
- рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдлрд▓рддрд╛ MySQL рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рднрд░рдиреЗ рдХреА рд╢реБрджреНрдзрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧреАред
- MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╕рдордп рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛ред
рдареАрдХ рд╣реИред рдФрд░ рдХреНрдпреЛрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ? рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдЖрд░рдВрднреАрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд▓рд╣рд╛рд▓ рдореБрдЭреЗ рдЗрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдореМрдЬреВрджрд╛ рдЬрд╝рд░реВрд░рддреЗрдВ рддреЗрдЬрд╝ рдФрд░ рд╕рд╕реНрддреА рд╣реИрдВ (рд╕реНрдЯрдбреАрдЬрд╝ рдФрд░
рд╡рд┐рд╢реЗрд╖рдгреЛрдВ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреА рдХреЛрдИ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ), рдЬреЛ рдХреЗрд╡рд▓ рдЙрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдЧрд╛ рдЬреЛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред
рд╡реИрд╕реЗред рд▓рдбрд╝рд╛рдИ рдореЗрдВ, рдореИрдВ рдмреБрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдХрд╢реЗрд▓реНрдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ ред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рдЗрди рджреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдмрд╛рдж, рдореИрдВ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред
рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдореБрдЭреЗ Request
рд╡рд░реНрдЧ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ Request
рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрд░реЗ рд▓рдбрд╝рд╛рдХреВ рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПред рддреЛ рдЕрдм рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
class Request { constructor(db){ this.db = db; } configure(options){ this.options = options; } execute(){ const table = this.db.Model.extend({ tableName: this.options.tableName }); return table.where(this.options.query).fetch(); } } module.exports = Request;
рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдКрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рдБред DbMock
, рдореЗрд░реЗ рдкрд╛рд╕ DbMock
рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯрдм рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
class DbMock { constructor(){} } module.exports = DbMock;
рдореИрдВ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдКрдВрдЧрд╛ред рдЕрдм рдХреНрдпрд╛ рд░рд╛рдЬрдХреБрдорд╛рд░реА Jasmine
рдореБрдЭреЗ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдореЗрд░рд╛ DbMock
Model
рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛:
class DbMock { constructor(){ this.Model = { extend: () => {} }; } } module.exports = DbMock;
рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЕрдм рддреНрд░реБрдЯрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдореЗрдВ, рдореИрдВ configure
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реВрдВ:
const options = { tableName: 'users', query: { id: 1 } }; it('execute should return promise', () => { request.configure(options); request.execute().then((result) => { expect(result).toBeNull(); }); });
рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рджреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ options
рдЪрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреВрд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛрдб рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПред
рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, DbMock
рд╡рд░реНрдЧ рдХреЗ Model
рдХреЗ рдЧреБрдг, рдЧреБрдг, рдиреЗ рд╣рдореЗрдВ undefined
рд▓реМрдЯрд╛ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ where
рд╡рд┐рдзрд┐ where
рд╣реИред
рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ DbMock
рд╡рд░реНрдЧ рдХреА Model
рд╕рдВрдкрддреНрддрд┐ рдХреЛ DbMock
рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд╣рд░ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореМрдЬреВрджрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕реЗ DbMock
рд╡рд░реНрдЧ рдореЗрдВ рд╕реАрдзреЗ Model
рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдЕрдзрд┐рдХ рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдХреЛрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдкрдврд╝рдирд╛ рдФрд░ рд╕рдордЭрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ ... рдФрд░ рдпрд╣, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдВ рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред
So. рд╕рд╛рдБрд╕ рд▓реЗрдирд╛, рд╕рд╛рдБрд╕ рдЫреЛрдбрд╝рдирд╛, рджрд┐рд▓ рдХреА рдмреЗрд╣реЛрд╢реА рдХрдорд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреА рд╣реИред DbMock
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред рддрд╛-рджрд╣рд╛рдордореНрдореНрдореНрдотАжред
class DbMock { constructor(){ this.Model = { extend: () => { return { where: () => { return { fetch: () => { return new Promise((resolve, reject) => { resolve(null); }); } }; } }; } }; } } module.exports = DbMock;
рдЯрд┐рди! рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рджреГрдврд╝ рд╣рд╛рде рд╕реЗ, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ Jasmine
рдлрд┐рд░ рд╕реЗ рд╣рдореЗрдВ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдбреЙрдЯреНрд╕ рджрд┐рдЦрд╛рддреА рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рднреА рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реВрдЬ рдЧрдпрд╛ рд╣реИред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдирдЧреНрди рдЖрдВрдЦреЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЫрджреНрдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА Model
рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдЫрджреНрдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрднреА рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реВрдВрдЧрд╛ред рдФрд░ рдЪреВрдВрдХрд┐ рдореМрдЬреВрджрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреЗрд╡рд▓ users
рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдореИрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреВрдВрдЧрд╛:
describe('Users', () => { const users = require('./Users'); it('should contain one user', () => { expect(Array.isArray(users)).toBeTruthy(); expect(users.length).toEqual(1); const user = users[0]; expect(user.Id).toEqual(1); expect(user.Name).toEqual('Jack'); }); });
рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдкрд╛рд╕ рди рд╣реЛрдВ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рд╕рд╛рдзрд╛рд░рдг рдХрдВрдЯреЗрдирд░ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░реВрдВ:
const Users = [ { Id: 1, Name: 'Jack' } ]; module.exports = Users;
рдЕрдм рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╢рдмреНрджрд╛рд░реНрде рдкреИрдХреЗрдЬ рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкреНрд░рджрд╛рддрд╛ рд╢рдмреНрджрд╛рд░реНрде рд╣реИред рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ extend
рд╡рд┐рдзрд┐ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рдкрд╛рд╕ рдХрд░рддреЗ extend
ред рдЗрд╕реЗ extend
рдХреНрдпреЛрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ get
, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рд╢рд╛рдпрдж рдпрд╣ рдХреЗрд╡рд▓ bookshell
рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рдХреА рдХрдореА рд╣реИред
рдареАрдХ рд╣реИ, рднрдЧрд╡рд╛рди рдЙрд╕реЗ рдЖрд╢реАрд░реНрд╡рд╛рдж рджреЗрдВ, рдЕрдм рдореЗрд░реЗ рдорди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ:
describe('TableMock', () => { const container = require('./Users'); const Table = require('./TableMock'); const users = new Table(container); it('should return first item', () => { users.fetch({ Id: 1 }).then((item) => { expect(item.Id).toEqual(1); expect(item.Name).toEqual('Jack'); }); }); });
рдЪреВрдВрдХрд┐ рдХреНрд╖рдг рдореЗрдВ рдореБрдЭреЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрдВрдбрд╛рд░рдг рдЪрд╛рд▓рдХ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рд╕рдмрд╕реЗ рдЖрдЧреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ:
class TableMock { constructor(container){ this.container = container; } fetch() { return new Promise((resolve, reject) => { resolve(this.container[0]); }); } } module.exports = TableMock;
рд▓реЗрдХрд┐рди fetch
рдПрдХрдорд╛рддреНрд░ рдРрд╕реА рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдореБрдХрд╛рдмрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ:
it('where-fetch chain should return first item', () => { users.where({ Id: 1 }).fetch().then((item)=> { expect(item.Id).toEqual(1); expect(item.Name).toEqual('Jack'); }); });
рдЬрд┐рд╕рдореЗрдВ рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ TableMock
рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ TableMock
рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реВрдВ:
where(){ return this; }
рдЕрдм рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк DbMock
рд╡рд░реНрдЧ рдореЗрдВ Model
рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛, рдпрд╣ TableMock
рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рджрд╛рддрд╛ рд╣реЛрдЧрд╛:
describe('TableMockMap', () => { const TableMock = require('./TableMock'); const TableMockMap = require('./TableMockMap'); const map = new TableMockMap(); it('extend should return existent TableMock', () => { const users = map.extend({tableName: 'users'}); expect(users instanceof TableMock).toBeTruthy(); }); });
рдХреНрдпреЛрдВ TableMockMap
, рдХреНрдпреЛрдВрдХрд┐ рд╢рдмреНрджрд╛рд░реНрде рдпрд╣ рд╣реИред рдмрд╕ рд╡рд┐рдзрд┐ рдирд╛рдо рдХреЗ рдмрдЬрд╛рдп, extend
рд╡рд┐рдзрд┐ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рддреЗ рд╣реИрдВ:
const Users = require('./Users'); const TableMock = require('./TableMock'); class TableMockMap extends Map{ constructor(){ super(); this.set('users', Users); } extend(options){ const container = this.get(options.tableName); return new TableMock(container); } } module.exports = TableMockMap;
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЫрд╣ рд╣рд░реЗ рдбреЙрдЯреНрд╕ рджреЗрдЦреЗрдВред рдЬреАрд╡рди рд╕реБрдВрджрд░ рд╣реИред
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА DbMock
рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ
рдЖрд░рдВрднрд┐рдХ
рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрджреНрднреБрдд TableMockMap
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ TableMockMap
ред рд╣рдо рдЗрд╕реЗ рд╕реНрдердЧрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд╛рдп рд▓реЗрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдирдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЦреБрд╢реА рд╕реЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИ:
const TableMockMap = require('./TableMockMap'); class DbMock { constructor(){ this.Model = new TableMockMap(); } } module.exports = DbMock;
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ ... рдФрд░ рдЙрдлрд╝! рд╣рдорд╛рд░рд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдЧрд┐рд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдФрд░ рднреА рдЕрдЪреНрдЫрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрдЯрдм рдерд╛ рдФрд░ рдЕрдм рд╣рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд╣реИ:
it('execute should return promise', () => { request.configure(options); request.execute().then((result) => { expect(result.Id).toEqual(1); expect(result.Name).toEqual('Jack'); }); });
рдЯреЗрд╕реНрдЯ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдкрдиреНрди рд╣реБрдПред рдФрд░ рдЕрдм рдЖрдк рдПрдХ рдмреНрд░реЗрдХ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореА рдЕрдиреБрд░реЛрдз рдХреЛрдб рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рдмрд╣реБрдд, рдПрдХрджрдо рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд┐рд░реНрдл рдПрдХ рдЖрд╕рд╛рди-рд╕реЗ-рдЙрдкрдпреЛрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рд╕реЗ рд╣реИ рдХреБрд░реНрд╕рд┐рдпрд╛рдВ тАЛтАЛрдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред