Services/Factoriesのテスト
テストの目的独立したテストサービスで、バグとerrorを見つけます. テストでは、stubbingがXHRリクエストを処理する必要はありません.
テストサービスは一番楽しいことです.ユニットテストやMidwayテストサービスでは、さまざまなポーズ(パラメータ、戻り値、異常など...)で遊ぶことができます.覚えておいてください.ユニットテストとMidwayテストはこの例でよく似ていますが、もしあなたのサービスにXHRリクエストがあれば、$httpサービスを使用して、それからこのリクエストを捕まえて中断して、Mockのシミュレーションデータで戻り値を書き直して、ユニットテストをより純粋にすることができますが、Midwayテストはそうしないでください.
ユニットテスト
Midwayテスト
テストサービスは一番楽しいことです.ユニットテストやMidwayテストサービスでは、さまざまなポーズ(パラメータ、戻り値、異常など...)で遊ぶことができます.覚えておいてください.ユニットテストとMidwayテストはこの例でよく似ていますが、もしあなたのサービスにXHRリクエストがあれば、$httpサービスを使用して、それからこのリクエストを捕まえて中断して、Mockのシミュレーションデータで戻り値を書き直して、ユニットテストをより純粋にすることができますが、Midwayテストはそうしないでください.
ユニットテスト
<!-- lang: js -->
//
// test/unit/services/servicesSpec.js
//
describe("Unit: Testing Controllers", function() {
beforeEach(module('App'));
it('should contain an $appStorage service',
inject(function($appStorage) {
expect($appStorage).not.to.equal(null);
}));
it('should contain an $appYoutubeSearcher service',
inject(function($appYoutubeSearcher) {
expect($appYoutubeSearcher).not.to.equal(null);
}));
it('should have a working $appYoutubeSearcher service',
inject(['$appYoutubeSearcher',function($yt) {
expect($yt.prefixKey).not.to.equal(null);
expect($yt.resize).not.to.equal(null);
expect($yt.prepareImage).not.to.equal(null);
expect($yt.getWatchedVideos).not.to.equal(null);
}]));
it('should have a working service that resizes dimensions',
inject(['$appYoutubeSearcher',function($yt) {
var w = 100;
var h = 100;
var mw = 50;
var mh = 50;
var sizes = $yt.resize(w,h,mw,mh);
expect(sizes.length).to.equal(2);
expect(sizes[0]).to.equal(50);
expect(sizes[1]).to.equal(50);
}]));
it('should store and save data properly',
inject(['$appStorage',function($storage) {
var key = 'key', value = 'value';
$storage.enableCaching();
$storage.put(key, value);
expect($storage.isPresent(key)).to.equal(true);
expect($storage.get(key)).to.equal(value);
$storage.erase(key);
expect($storage.isPresent(key)).to.equal(false);
$storage.put(key, value);
$storage.flush();
expect($storage.isPresent(key)).to.equal(false);
}]));
});
Midwayテスト
<!-- lang: js -->
//
// test/midway/services/servicesSpec.js
//
describe("Midway: Testing Services", function() {
var tester;
beforeEach(function() {
if(tester) {
tester.destroy();
}
tester = ngMidwayTester('App');
});
it('should perform a JSONP operation to youtube and fetch data',
function(done) {
var $yt = tester.inject('$appYoutubeSearcher');
expect($yt).not.to.equal(null);
//this is the first video ever uploaded on youtube
//so I doubt it will be removed anytime soon
//and should be a good testing item
var youtubeID = 'jNQXAC9IVRw';
$yt.findVideo(youtubeID, false,
function(q, data) {
expect(data).not.to.equal(null);
expect(data.id).to.equal(youtubeID);
done();
}
);
});
});