рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
createStubInstance
рдЕрдкрдиреЗ рдЧреБрдгреЛрдВ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░, рдПрдХ рд╕реБрдкрд░ рдХреНрд▓рд╛рд╕ рдкрд░, рдЕрдкрдиреА рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рдЕрдВрдзрд╛ рд╣реЛрддрд╛ рд╣реИ
рдкреНрд░рдЬрдирди рдХрд░рдирд╛
class SubTest {
name;
constructor({ name }) { this.name = name }
something() {}
}
export default class SuperTest extends SubTest {
description;
constructor(...props) {
super(props);
this.description = props.description;
}
noop() {}
}
import sinon from 'sinon';
import SuperTest from './SuperTest.js';
sinon.createStubInstance(SuperTest, {
description: 'Lorem Ipsum',
name: 'Foobar',
noop() {},
something() {},
});
Error: Cannot stub description. Property does not exist!
at тАж/sinon/lib/sinon/stub.js:129:19
at Array.forEach (<anonymous>)
at stub.createStubInstance (тАж/sinon/lib/sinon/stub.js:120:5)
description: 'Lorem Ipsum',
рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:
Error: Cannot stub name. Property does not exist!
at тАж/sinon/lib/sinon/stub.js:129:19
at Array.forEach (<anonymous>)
at stub.createStubInstance (тАж/sinon/lib/sinon/stub.js:120:5)
name: 'Foobar',
рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА:
Error: Cannot stub something. Property does not exist!
at тАж/sinon/lib/sinon/stub.js:129:19
at Array.forEach (<anonymous>)
at stub.createStubInstance (тАж/sinon/lib/sinon/stub.js:120:5)
рдУрд╡рд░рд░рд╛рдЗрдб рдореЗрдВ рдХреЗрд╡рд▓ noop() {}
рдХреЗ рд╕рд╛рде, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ createStubInstance
рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдкрд░ рдореМрдЬреВрдж рдХрд┐рд╕реА рднреА/рд╕рднреА рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реНрдЯрдм рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдкреНрд░рд╕рдВрдЧ (рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ):
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЕрдзрд┐рдХ рд╕рд░рд▓ рдмрдирд╛ рджрд┐рдпрд╛ рдФрд░ super()
рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╕рд┐рдиреЙрди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рд╛ред рдКрдкрд░ рдкрд░реАрдХреНрд╖рдг рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕реЗ рдпрд╣рд╛рдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣рд╛рдВ рдХрдИ рдЪреАрдЬреЗрдВ рдЧрд▓рдд рд╣реИрдВ рдпрд╛ рдЧрд▓рдд рд╕рдордЭрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:
createStubInstance
рдкрд░ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИ (рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рднреА рдирд╣реАрдВ рдереА )редрджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐
рджрд┐рдП рдЧрдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ рдпрд╣ рдзрд╛рд░рдгрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
{ something: sinon.stub() }
)ред{ something: 42 }
) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВредрдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рдмрдЧ рдирд╣реАрдВ рд╣реИред
рдЖрдк рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк "рд╡рд░реНрдЧ" рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ createStubInstance
рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдореЗрдВ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЗ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдЯрдмреНрд╕ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╕реНрдЯрдм рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдЧреБрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЗ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк "рд╡рд░реНрдЧ" рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ
createStubInstance
рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдореЗрдВ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЗ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдЯрдмреНрд╕ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╕реНрдЯрдм рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдЧреБрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпрд╛ createStubInstance рдХреЗ рднреАрддрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
function createStubInstance (тАж) {
// тАж
return Object.assign(stubbedInstance, propertyValuePairs); // anything it doesn't recognise
}
@ jshado1 рдЬрд╝рд░реВрд░, рд╣рдо рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рдереЗред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ