null
QUnit と jQuery Mockjax を使用して AJAX 関連のコードをテストしようとしていますが、リクエストの contentType が変更されたときにMockjax が常に返されるように見えるという問題に遭遇しました。
動作する JS コード:
QUnit.asyncTest('$.ajax POST', function() {
expect(1);
$.mockjax({
url: '/test',
type: 'POST',
responseText: {
foo: 'bar'
}
});
$.ajax({
url: '/test',
type: 'POST',
})
.done( function(data,textStatus,jqXHR) {
deepEqual(data,{foo:'bar'},'Correct response');
QUnit.start();
});
});
ただし、$.ajax
リクエストでコンテンツタイプを設定すると、次のようになります。
$.ajax({
url: '/test',
type: 'POST',
contentType: 'application/json',
})
テストは失敗します:
Expected:
{
"foo": "bar"
}
Result:
null
問題を示すjsfiddle hereがあります。
私は何を間違っていますか?それとも、これはバグですか、それとも JS ライブラリ間の非互換性ですか?
jquery 1.7.2、mockjax 1.5.3、および QUnit 1.14.0 を使用しています。Chrome と Firefox でも同じ動作が見られます。
注:当然のことながら、本番環境のコードでは、リクエストで JSON エンコードされたデータも送信しますが、デモンストレーションのために、問題を再現するために最低限必要であると思われるものに問題を減らしました。