cari

Rumah  >  Soal Jawab  >  teks badan

node.js - mocha menguji ralat tindakan permintaan tak segerak ajax

Apabila mocha menguji tindakan tak segerak dengan permintaan ajax, konsol melaporkan 'dokumen' sifat ralat tidak dapat dibaca Kodnya adalah seperti berikut:
/counter.js/

.
import $ from "../componet/jquery.min.js"
export const CHANGE_USERNAME_ERROR = 'CHANGE_USERNAME_ERROR'

export function checkUsername (name) {
  return (dispatch) => {
    $.get('/check', {username: name}, (msg) => {
      dispatch({
        type: CHANGE_USERNAME_ERROR,
        error: msg
      })
    })
  }
}

/counter.test.js/

import { expect } from 'chai'
import sinon from 'sinon'
import * as Actions from '../../public/javascripts/actions/counter';
describe('actions/register', () => {
  let actions
  let dispatchSpy
  let getStateSpy
  let xhr
  let requests

  beforeEach(function() {
    actions = []
    dispatchSpy = sinon.spy(action => {
      actions.push(action)
    })
    
    xhr = sinon.useFakeXMLHttpRequest()
    requests = []
    xhr.onCreate = function(xhr) {
      requests.push(xhr);
    };
  })

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

  describe('Action: checkUsername', () => {   
    it('Should call dispatch CHANGE_USERNAME_ERROR.', () => {
      Actions.checkUsername('foo@bar')(dispatchSpy)      
      const body = '不能含有特殊字符'
      
      // 手动设置 ajax response      
      requests[0].respond(200, {'Content-Type': 'text/plain'}, body)  
          
      expect(actions[0]).to.have.property('type', Actions. CHANGE_USERNAME_ERROR)
      expect(actions[0]).to.have.property('error', '不能含有特殊字符')
    }) 
  })
})
报的是jquery.min.js中的错误,我是在控制台跑的mocha,麻烦各位给参谋参谋!拜谢
高洛峰高洛峰2752 hari yang lalu846

membalas semua(1)saya akan balas

  • 迷茫

    迷茫2017-05-16 13:41:34

    Pertama sekali, anda tidak mempunyai persekitaran DOM di sini, anda memerlukan jsdom untuk mensimulasikan persekitaran DOM. Kedua, walaupun anda mensimulasikan persekitaran DOM, anda tidak boleh memanggil AJAX, kerana untuk ujian anda, tiada pelayan sama sekali yang boleh membuat permintaan untuk anda, melainkan anda mensimulasikan pelayan olok-olok di sini, yang saya belum cuba.

    balas
    0
  • Batalbalas