角度単位テストの学習を始めました。ただし、http呼び出しの関数に対するこのテストは失敗します。私はピンが問題を指摘しているが、私はそれを修正することができていない。私はそれはいくつかの簡単な問題ジャスミン角度単位テスト '未定義の'プロパティを読み取ることができません
コントローラの知っている
//Get data from URL
vm.getJson = function() {
var url = 'https://www.reddit.com/r/worldnews/new.json',
count = 0;
$http.get(url).success(function(response) {
console.log(response);
for (var i = 0; i < response.data.children.length; i++) {
vm.data.push(response.data.children[i].data);
count++;
if (count === response.data.children.length) {
vm.numberOfPages();
}
}
vm.result = true;
}).error(function(err) {
console.log(err);
});
};
スペック
//Testing the getJson function
describe('vm.getJson()', function() {
it('It should return dummy Data as response and vm.result to be truthy', function() {
var dummyData = {name: 'Umair'};
$httpBackend.whenRoute('GET','https://www.reddit.com/r/worldnews/new.json').respond(200, dummyData);
MainCtrl.getJson();
$httpBackend.flush();
expect(MainCtrl.result).toBeTruthy();
}); });
私はすべてのエラーを得ることはありません私がループをcから取り除くとテストに合格しますontroller機能です。私が得るエラーは次のとおりです。
未定義の「子供」は読み取れません。応答データを添付した画像から、子は配列です。あなたダミーデータが配列でない
ありがとうございます。私は実際のデータを模倣しようとしましたが、これは他の答えと同じです。ありがとうございました。しかし、私はまだあなたが何を意味するのか混乱しています。「この嘲笑的な振る舞いによって、あなたのユニットテストは信頼できないまま完了することができますか?それはどのように機能するのですか? –
このテスト段階に入る前に、テストフレームワークをセットアップし、「角モック」と呼ばれるものを組み込む必要がありました。 $ httpBackendには、$ http呼び出しを傍受して模擬データ(dummyDataなど)を使用するという考えがあります。ユニットテストの目的は、いくつかのサンプル入力を渡し、特定の出力/動作を期待することによって、1つの単一機能のような小さなコードをテストすることです。黙っているだけでそれをすることができます。テストが失敗した場合は、関数にエラーが導入されていることがわかり、redditやネットワーク接続とは何の関係もありません。 – lastoneisbearfood
ええ、大丈夫です。それを答えとして受け入れるつもりです。しかし、最後の1つの質問、私が作成したモック、それは元のデータと一致する必要がありますか?元のレスポンスのように、プロパティの子供がいて、モックで同じプロパティキーを追加する必要がありますか? –