2016-10-17 9 views
1

Я пытаюсь выполнить модульные тесты в компонентах реакции с моккой, chai и sinon.Fake server response body должен быть строкой, но не определено

Мой первый тест работал, это просто проверка, если компонент существует и если реквизита используются правильно.

Теперь у меня возникли проблемы с ajax на тестах.

Вот мой код:

import * as React from 'react'; 
import chai from 'chai'; 
import TestUtils from 'react-addons-test-utils'; 
import TransmissorAdd from '../../../middle/transmissors/TransmissorAdd'; 
import sinon from 'sinon' 

const expect = chai.expect 

describe('components/transmissors/TransmissorAdd',() => { 

    let params = { 
     method: 'add' 
    } 
    var server = null; 

    beforeEach(function() { 
     server = sinon.fakeServer.create(); 
    }); 

    afterEach(function() { 
     server.restore(); 
    }); 

    it('ajax working',() => { 
     // Set up the fake response 
     server.respondWith('GET', '/api/client/1/', 
      [200, {'Content-Type': 'application/json'}, 
       JSON.stringify(
        { 
         "id": 1, 
         "first_name": "firstname", 
         "last_name": "lasname", 
         "account": "0016", 
         "cpf": "55555555555", 
         "rg": "5555555555", 
         "birthdate": "0000-00-00", 
         "street": "Av. street", 
         "number": 881, 
         "complement": "", 
         "district": "xxxxxx", 
         "city": "city", 
         "country": "Brasil", 
         "state": "RS", 
         "zip_code": "00000000", 
         "health_plan": "", 
         "account_phone": "5599999999", 
         "contact_phone": "", 
         "key_box": "", 
         "general_info": "" 
        } 
       ) 
      ] 
     ); 

     server.respondWith('POST', '/api/transmissors/', 
      [200, JSON.stringify({'response': 'ok'})]); 


     const transmissorAdd = TestUtils.renderIntoDocument(
      <TransmissorAdd params={params} /> 
     ) 

     server.respond(); 
    }) 

}); 

Я получаю это сообщение ошибки:

TypeError: Fake server response body should be string, but was undefined 
     at responseArray (node_modules/sinon/lib/sinon/util/fake_server.js:31:19) 
     at Object.respondWith (node_modules/sinon/lib/sinon/util/fake_server.js:178:67) 
     at Context.<anonymous> (assets/js/components/__tests__/middle/transmissors/TransmissorAdd.test.js:55:16) 

Что случилось?

Заранее спасибо

+0

ли ваш компонент вызывает/апи? – devside

+0

Да, все мои компоненты call/api –

ответ

1

Похоже, вам нужно передать пустые варианты {}

server.respondWith('POST', '/api/transmissors/', [200, {}, JSON.stringify({'response': 'ok'})]); 

Вы можете использовать эту короткую форму

server.respondWith('POST', '/api/transmissors/', JSON.stringify({'response': 'ok'}));