Sinon: рдирдХрд▓реА рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп рд╣реЛрддреА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬреВрди 2017  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sinonjs/sinon

  • рд╕рд┐рдиреЙрди рд╕рдВрд╕реНрдХрд░рдг: 2.3.2
  • рдкрд░реНрдпрд╛рд╡рд░рдг : рдХрд░реНрдо-рдкрд░реАрдХреНрд╖рд╛-рдзрд╛рд╡рдХ
  • рдЙрджрд╛рд╣рд░рдг рдпреВрдЖрд░рдПрд▓:
  • рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬрд┐рдирдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдореЛрдЪрд╛

рдЖрдкрдиреЗ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреА рдереА? рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ sinon.fakeServer.requests рдХреА рд╕рдВрдЦреНрдпрд╛ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдереА 1

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ sinon.fakeServer.requests рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп

рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░реЗрдВ

describe('--Pictures Selector--', () => {
   let server, store, wrap;
   beforeEach(() => {
      server = sinon.fakeServer.create();
      server.respondWith("GET", /\/api\/users/, [
         200, {"Content-Type":"application/json"}, JSON.stringify(mock_pictures_list_store)
      ]);
      store = new Pictures_List_Store([]);
      wrap = mount(
         <Selectable_Picture_List store={store} />
      );
      axios.get('http://localhost:9157/api/users/5/images/30/0');
      console.log("%c server.requests", "color: #C78B41", server.requests);
   });
   afterEach(() => {
      server.restore();
   });

   it('render drop zone', () => {
      server.respond();
      console.log("%c server.requests", "color: #C78B41", server.requests);
      expect(wrap.find('Dropzone')).to.have.length(1);
   });
});


рдореИрдВ рд╕реАрдзреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдореЗрдВ axios.get рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ componentWillMount рд╡рд┐рдзрд┐ рдореЗрдВ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЗрдПрд╕ рдШрдЯрдХ

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

рдХреНрдпрд╛ рдирдХрд▓реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдЪрдЯреАрдПрдордПрд▓ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рд╣рд╛рдБ, рд╡рд╣рд╛рдБ рд╣реИ ред

рдЙрдкрд░реЛрдХреНрдд рдЖрдкрдХреЗ beforeEach рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рджреЛ рдЧреБрдирд╛ рд╣реИ:

  1. beforeEach рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░реЗрдВ
  2. console.log рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреНрд╖рдг рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ

рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

beforeEach(done => {
  // ...
  axios.get(...);
  setTimeout(() => {
    console.log("%c server.requests", "color: #C78B41", server.requests);
    done();
  });
});

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

axios.get() рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬрдм рдЖрдкрдХреА console.log рд▓рд╛рдЗрди рдЪрд▓рддреА рд╣реИ, рддреЛ xmlhttprequest рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд▓реЗрдХрд┐рди рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрдм рдореИрдВ server.autoRespond = true; рдпрд╛ server.respondImmediately = true; рдпрд╛ server.respond(); рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдиреБрд░реЛрдз рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ рдХрд┐ рдпреЗ рдЪреАрдЬреЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреАрдВ?
рдХреНрдпрд╛ рдирдХрд▓реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдЪрдЯреАрдПрдордПрд▓ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдХреНрдпрд╛ рдирдХрд▓реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдЪрдЯреАрдПрдордПрд▓ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рд╣рд╛рдБ, рд╡рд╣рд╛рдБ рд╣реИ ред

рдЙрдкрд░реЛрдХреНрдд рдЖрдкрдХреЗ beforeEach рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рджреЛ рдЧреБрдирд╛ рд╣реИ:

  1. beforeEach рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░реЗрдВ
  2. console.log рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреНрд╖рдг рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ

рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

beforeEach(done => {
  // ...
  axios.get(...);
  setTimeout(() => {
    console.log("%c server.requests", "color: #C78B41", server.requests);
    done();
  });
});

рд╡рд╛рд╣ рд╡рд╛рд╣ред рд╡рд╣ рдХрд╛рдо рд╣реИ! рдзрдиреНрдпрд╡рд╛рджред рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЧрдпрд╛ред

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

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

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

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

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

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

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