Pregunta

Tengo las siguientes especificaciones de Jasmine:

describe "plugins", ->
    beforeEach ->
    @server = sinon.fakeServer.create()

    afterEach ->
    @server.restore()

    describe "reviewStatus", ->
    it "should attach dates to content", ->
      @server.respondWith("GET", "/GeneralDocument.mvc.aspx/GetDocumentParent?typeName=ncontinuity2.core.domain.Plan&documentParentUid=45f0bccb-27c9-410a-bca8-9ff900ab4c28d",
        [200, {"Content-Type": "application/json"},
        '{"ReviewDate":"22/09/2012","AcknowledgedDate":"05/07/2012"}'])   

      $('#jasmine_content').addReviewStatus('ncontinuity2.domain.Plan', "45f0bccb-27c9-410a-bca8-9ff900ab4c28")     

      @server.respond()

      expect($('#reviewDateTab').find("strong").eq(0).length).toEqual(1)

AddReviewStatus es un complemento jQuery que he escrito:

do($ = jQuery) ->
    $.fn.extend
        addReviewStatus: (type, uid) ->
            ele = @

            reviewData = null           

            getJSON '/GeneralDocument.mvc.aspx/GetDocumentParent', {typeName: type, documentParentUid: uid}, 
                                (document) ->
                                    console.log('document = ' + document)
                                    compileTemplate(ele, document)
                                (response) ->
                                    showErrorMessage resonse.responseText
#etc., etc.

El método GetJson anterior llama a $ .AJAX así:

function getJSON(url, params, ajaxCallBack, ajaxErrorHandler, excludeProgress){
    var e = (ajaxErrorHandler) ? ajaxErrorHandler : validationErrorCallBack;
    var s = (ajaxCallBack) ? ajaxCallBack : jsonCallBack;
    $.ajax({
        type: "GET",
        url: url,
        cache: false, 
        data: params,
        beforeSend: function(xhr) {
            xhr.setRequestHeader("Ajax", "true");
            xhr.setRequestHeader("UseAjaxError", "true");
        },
        complete: function() {
        },
        success: s,
        timeout: _ajaxTimeOut,
        dataType: "json",
        error: e
    });
}

La devolución de llamada de la función anónima del método GetJson no se está disparando. También la llamada a $ .Jajax está devolviendo un 404 no encontrado. ¿Alguien puede ver lo que estoy haciendo mal?

¿Fue útil?

Solución

Sinon Fakeserver devuelve un 404 si la URL para la que lo ha llamado no tiene una respuesta asignada.

Parece que su problema es que la URL que está llamando no es la exacto Uno en el parámetro Respondewith (). Además, puede haber un límite en la longitud de la URL en Sinon, aunque no estoy seguro.

Otros consejos

Tengo un problema similar con. Parece estar relacionado con la apagada del caché en la llamada AJAX. Publicaré más si lo sigo. Puede intentar apagar el caché para la prueba y ver si pasa. Sin embargo, no estoy seguro de por qué necesita eso.

Ronan

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top