我一直想測試我的JSON對象的存在時得到「未定義」。我不懂爲什麼?如何從AMD模塊內的方法返回json?
修訂: 我看過......在深入...這裏列出的職位... How do I return the response from an asynchronous call?
在該職位對大多數史詩的回答的最後,作者提到了根本就沒有使用$ .getJSON。我不認爲這是我的選擇。我的情況不同,我需要使用$ .getJSON才能獲得json。另外,我的配置不同之處在於,我的$ .getJSON調用位於AMD模塊內的原型方法內。那篇文章確實幫助我明白,我可以返回整個$ .getJSON回來,我已經更新了我的代碼,以反映這一點。所以,現在...
什麼我需要做的,這樣當我打電話從我的測試文件codelib.gotjson和測試結果對象裏面的東西的價值?
注:我可以在我的鉻控制檯console.dir「對象」(結果)讓我看看裏面看。而在這個對象裏面,我可以看到一個「responseText」,其中包含了我之後珍貴的json字符串。但我現在停留在如何爲它寫一個斷言?
我想寫類似....
assert.equal(Object.responseText.name, 「鮑勃」, 「等於鮑勃」)
我現在SOOOO接近。任何幫助表示讚賞。謝謝。
codelib.js
"use strict";
define(function() {
//constructor
function Codelib(a,b){
// if u had passed vars
this.b = b;
this.a = a;
}
//methods
Codelib.prototype.code = function(a, b) {
return (a + b);
};
//methods
Codelib.prototype.gotjson = function() {
return $.getJSON("https://api.twitch.tv/kraken/streams/MedryBW")
.done(function (data) {
console.log('gotJSON: ');
console.dir(data);
})
.fail(function (jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.log("Request Failed: " + err);
});
};
return Codelib;
});
測試文件codeTest.js
"use strict";
define(['src/codelib','jquery'], function(Codelib){
var run = function(){
QUnit.test('code should return the sum of the two supplied numbers.',function(assert){
var codelib = new Codelib();
assert.equal(codelib.code(1,1),2, 'The return should be 2.');
assert.equal(codelib.code(-2,1),-1, 'The return should be -1.');
});
QUnit.test("As a user, I can see whether MedryBW is currently streaming on Twitch.tv",function(assert){
var codelib = new Codelib();
var result = codelib.gotjson();
console.log('in test: ');
console.dir(result);
assert.equal(codelib.gotjson(),1, 'should be true');
});
};
return {run: run}
});
注:鉻控制檯發現結果對象:
Object:
...
responseText: "{"_links": {"self":"https://api.twitch.tv/kraken/streams/medrybw"...etc
...
的可能的複製[?如何返回從異步調用的響應(http://stackoverflow.com/questions/14220321/how-to-return-the-response-從異步通話) – Louis