在qunit中使用mockjax模拟jsonp请求的问题

时间:2012-07-10 13:57:34

标签: ajax mocking jsonp qunit mockjax

我想在qunit中使用mockjax,但无法使其工作。 这是我尝试的一个简单测试:http://jsfiddle.net/shapeshifta/3YNB2/

asyncTest('Response returns jsonp', function() {
    $.mockjax({
        url: 'http://search.twitter.com/search.json*',
        contentType: 'text/json',
        proxy: 'mocks/twitter.json'
    });
    window.abcdef123456 = function() {
        start();
        ok(true, 'JSONP Callback executed');
    };

    $.ajax({
        url: 'http://search.twitter.com/search.json?q=Javascript&callback=?',
        jsonpCallback: 'abcdef123456',
        dataType: 'jsonp',
        error: function() {},
        complete: function() {}
    });
    $.mockjaxClear();
});

像没有mockjax代码的魅力一样工作,但实际上没有用它......我做错了吗?尝试使用sinon.js,但它有异步测试的一些问题,所以我想切换到mockjax。但我的代码只是不断向twitter询问数据,尽管mockjax应该模仿我的请求......

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我有这个工作:

asyncTest('Response returns jsonp', function() {

    $.mockjax({
        url: 'http://search.twitter.com/search.json*',
        contentType: 'text/json',
        proxy: 'mocks/twitter.json'
    });

    function onSucceed(data) {
        start();
        ok(true, 'JSONP completed');
    };

    $.ajax({
        url: 'http://search.twitter.com/search.json?q=Javascript&callback=?',
        dataType: 'jsonp',
        success: onSucceed,
        error: function() { alert('error'); },
        complete: function() { $.mockjaxClear(); }
    });
});​