Sinon: stub(obj, 'meth', fn) рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреЗрдЦреЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sinonjs/sinon

рдЬрдм рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ:

let obj = {
    foo: function() {
    }
}
var stub = sinon.stub(obj , "foo", () => {});

stub(obj, 'meth', fn) has been removed, see documentation

рдореИрдВ рдлрд┐рд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реВрдВ:

http://sinonjs.org/releases/v2.0.0/stubs/#var -stub--sinonstubobject-method-func

рд╡рд░ рдареВрдВрда = sinon.stub (рд╡рд╕реНрддреБ, "рд╡рд┐рдзрд┐", func);

рдПрдХ рдЬрд╛рд╕реВрд╕ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рдПрдХ func рдХреЗ рд╕рд╛рде object.method рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, object.method.restore(); рдореВрд▓ рд╡рд┐рдзрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рд╕рд┐рдиреЙрди 4.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

Google рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЦреЛрдЬрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╣рд╛рдВ рд╣реИрдВ: http://sinonjs.org/releases/v5.0.3/stubs/

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдпрд╛ рдлреЙрд░реНрдо stub(obj, 'meth').callsFake(fn) :

~ var stub = sinon.stub(object, "method", func); ~
рдЗрд╕реЗ v3.0.0 рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
stub(obj, 'meth').callsFake(fn)
рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдбрдореЙрдб рдЙрдкрд▓рдмреНрдз рд╣реИ

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

рднреВрд▓ рдЬрд╛рдУ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ Google seargh "рд╕рд┐рдиреЙрди рд╕реНрдЯрдм" 2.0.0 рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

Google рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЦреЛрдЬрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╣рд╛рдВ рд╣реИрдВ: http://sinonjs.org/releases/v5.0.3/stubs/

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирдпрд╛ рдлреЙрд░реНрдо stub(obj, 'meth').callsFake(fn) :

~ var stub = sinon.stub(object, "method", func); ~
рдЗрд╕реЗ v3.0.0 рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
stub(obj, 'meth').callsFake(fn)
рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдбрдореЙрдб рдЙрдкрд▓рдмреНрдз рд╣реИ

@mroderick : рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рд▓реЛрдЧ рд╣рдорд╛рд░реА (?) SEO рд░рдгрдиреАрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдпрд╣ рдЙрд╕ рд╕реБрдЭрд╛рд╡ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╛рд░ рдкреБрд░рд╛рдиреА Google рдЦреЛрдЬреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рд╣рдорд╛рд░реЗ рдЯреНрд╡рд┐рдЯрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ .. 2016?)ред

AFAI рдХреЛ рдпрд╛рдж рд╣реИ рдХрд┐ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рдлрд┐рдХреНрд╕ Django рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬреЛ рдХрд┐ Google рд╣рд┐рдЯ рдкреЙрдЗрдВрдЯ/рдирд╡реАрдирддрдо рд╣реЛрдиреЗ рд╕реЗ SEO рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдиреЛрдирд┐рдХрд▓ рд▓рд┐рдВрдХ рдореИрдирд┐рдкреБрд▓реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдЕрд░реНрдердкреВрд░реНрдг рд╢реБрджреНрдзрддрд╛ рдХрд╛ рдкреВрд░реНрд╡рд╛рднрд╛рд╕ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдореБрдЭреЗ рдПрдЯреАрдПрдо рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рдерд╛ред рдпрд╣ рд╕рд┐рд░реНрдл рдЬреЗрдХрд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдмрд╛рдзрд╛ рдереА, AFAI рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ :-)

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

@mantoni рд╣рд╛рдБ, рдореЙрд░реНрдЧрди рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдЯреНрд╡рд┐рдЯрд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ:


рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдХреБрдЫ рдПрд╕рдИрдУ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреВрд╕рд░рд╛ рд╕рдВрджреЗрд╣ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рд╢реНрди рдХреЛ рджреЗрдЦреЗрдВ: https://webmasters.stackexchange.com/questions/109113/versioned-pages-making-sure-google-points-to-the-current тАж рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрд╛рдпрд╛: https ://webmasters.stackexchange.com/questions/99867/how-to-correctly-mark-up-рднрд┐рдиреНрди-рд╕рдВрд╕реНрдХрд░рдг-of-the-same-document-who-are-non-c тАж

рдореВрд▓ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреЗрд╣рддрд░ Google рд╣рд┐рдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ Django рдЕрдкрдиреЗ рдбреЙрдХреНрд╕ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреИрдирд░ рдФрд░ canonical (рдпрд╛ noindex ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреАред

рдЕрдВрддрдд:, рдореИрдВ рдПрдХ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╡реЗрдмрд╕рд╛рдЗрдЯ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред

  • рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдЖрд╕рд╛рди, рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди (рдпрд╣ рд╕рднреА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдмреЛрдЭрд┐рд▓ рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)
  • рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг, рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐/рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди

рдЖрдЬ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрднреА рднреА stub(obj, 'meth', fn) has been removed, see documentation рд▓рд┐рдП рд╢реАрд░реНрд╖ Google рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдкрд░ рдЖрддрд╛ рд╣реВрдВ

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

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

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

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

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

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

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