Sinon: createStubInstance рдЕрдкрдиреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдпрд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЬрдире░ 2021  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sinonjs/sinon

рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
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 рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдкрд░ рдореМрдЬреВрдж рдХрд┐рд╕реА рднреА/рд╕рднреА рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реНрдЯрдм рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдкреНрд░рд╕рдВрдЧ (рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ):

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрд╕реНрдХрд░рдг: [email protected]
  • рд╡рд╛рддрд╛рд╡рд░рдг:
    рдореИрдХреЛрдЬрд╝ 11.1
    рдиреЛрдб 15.6.0
    рдПрдирдкреАрдПрдо 7.4
  • рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬрд┐рдирдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
    рдЪрд╛рдп 4.2.0
    рд╕рд┐рдиреЛрди-рдЪрд╛рдп 3.5.0

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЕрдзрд┐рдХ рд╕рд░рд▓ рдмрдирд╛ рджрд┐рдпрд╛ рдФрд░ super() рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╕рд┐рдиреЙрди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рд╛ред рдКрдкрд░ рдкрд░реАрдХреНрд╖рдг рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

Easy Documentation Help wanted

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕реЗ рдпрд╣рд╛рдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣рд╛рдВ рдХрдИ рдЪреАрдЬреЗрдВ рдЧрд▓рдд рд╣реИрдВ рдпрд╛ рдЧрд▓рдд рд╕рдордЭрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:

  • createStubInstance рдкрд░ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИ (рдореБрдЭреЗ рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рднреА рдирд╣реАрдВ рдереА )ред
  • рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐

    рджрд┐рдП рдЧрдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    рддреЛ рдпрд╣ рдзрд╛рд░рдгрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

  • рдЗрд╕ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣ рдХрд░рддрд╛ рд╣реИ:

    • рдлреЗрдВрдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╕рдВрдкрддреНрддрд┐ рдЕрддрд┐рджреЗрдп рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдЯрдм рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣реА рд╣реЛрддрд╛ рд╣реИред рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ "рд╕рджрд╕реНрдп" рдЧреБрдг рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред

    • рдпрджрд┐ рджрд┐рдпрд╛ рдЧрдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдПрдХ рд╕реНрдЯрдм рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯрдм рдХреЛ рджрд┐рдП рдЧрдП рд╕реНрдЯрдм рд╕реЗ рдмрджрд▓реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП { something: sinon.stub() } )ред

    • рдЕрдиреНрдпрдерд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯрдм рдХреЛ рджрд┐рдП рдЧрдП рдЧреБрдг рдорд╛рди (рдЬреИрд╕реЗ { something: 42 } ) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВред

рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рдмрдЧ рдирд╣реАрдВ рд╣реИред


рдЖрдк рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк "рд╡рд░реНрдЧ" рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ createStubInstance рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдореЗрдВ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЗ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдЯрдмреНрд╕ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╕реНрдЯрдм рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдЧреБрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреЗ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк "рд╡рд░реНрдЧ" рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ createStubInstance рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдореЗрдВ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЗ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдЯрдмреНрд╕ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╕реНрдЯрдм рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдЧреБрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ createStubInstance рдХреЗ рднреАрддрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

function createStubInstance (тАж) {
  // тАж
  return Object.assign(stubbedInstance, propertyValuePairs); // anything it doesn't recognise
}

@ jshado1 рдЬрд╝рд░реВрд░, рд╣рдо рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рдереЗред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

zimtsui picture zimtsui  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tinganho picture tinganho  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kevinburkeshyp picture kevinburkeshyp  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

akdor1154 picture akdor1154  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

andys8 picture andys8  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ