でテストするために1つの値以上のものを提供しています。しかし、私はPlaceholderSupportService()
の値をfalse
にしました。私はtrue
とこの値を持っている2番目のテストを実行したい。 it
の文の中で$provide
にアクセスできないようですが、どうすればいいですか?
1
A
答えて
3
あなたはPlaceholderSupportService
に変数を返すよう指示できます。そして、テストブロックで、変数の値を変更します。これは問題を解決するはずです。ここにその例があります:
describe('placeholder directive', function() {
// Bindable members
var element;
var providerResult = false; //Here is the variable that you will change.
// Load module
beforeEach(angular.mock.module('app'));
// Mock service response
beforeEach(module(function($provide) {
$provide.value('PlaceholderSupportService', function() {
return providerResult;
});
}));
// Check the correct HTML is rendered
it('Renders placeholder as input value when placeholder is not supported', inject(function($timeout) {
element = $compile('<input name="test" placeholder="Test" />')($rootScope);
$rootScope.$digest();
$timeout.flush();
expect(element[0].value).toBe('Test');
}));
// Check the correct HTML is rendered
it('Renders placeholder as input value when placeholder is supported', inject(function($timeout) {
providerResult = true; //Here I will change the result of my PlaceholderSupportService
element = $compile('<input name="test" placeholder="Test" />')($rootScope);
$rootScope.$digest();
$timeout.flush();
expect(element[0].value).toBe('Test');
}));
});
0
it
ごとにbeforeEach
を与えるために、テストを簡単に再構成できます。このコードはおそらくちょっと整理できますが、ここにその考えがあります。
describe('placeholder directive', function() {
// Bindable members
var element;
describe('when placeholder is supported', function() {
// Load module
beforeEach(angular.mock.module('app'));
// Mock service response
beforeEach(module(function($provide) {
$provide.value('PlaceholderSupportService', function() {
return true;
});
}));
// Bind references to global variables
beforeEach(inject(function($compile, $rootScope) {
element = $compile('<input name="test" placeholder="Test" />')($rootScope);
$rootScope.$digest();
}));
// Check the correct HTML is rendered
it('Renders placeholder as input value when placeholder is not supported', inject(function($timeout) {
$timeout.flush();
expect(element[0].value).toBe('Test');
}));
});
describe('when placeholder is not supported', function() {
// Load module
beforeEach(angular.mock.module('app'));
// Mock service response
beforeEach(module(function($provide) {
$provide.value('PlaceholderSupportService', function() {
return false;
});
}));
// Bind references to global variables
beforeEach(inject(function($compile, $rootScope) {
element = $compile('<input name="test" placeholder="Test" />')($rootScope);
$rootScope.$digest();
}));
// Check the correct HTML is rendered
it('Renders placeholder as input value when placeholder is not supported', inject(function($timeout) {
$timeout.flush();
expect(element[0].value).toBe('Test');
}));
});
});
関連する問題
- 1. 角度カルマジャスミン - テスト機能
- 2. は、私は次のディレクティブを持って角度
- 3. 角度 - 私はディレクティブのテンプレートでフォームを持っている子ディレクティブ
- 4. カルマジャスミン非同期テストは
- 5. カルマジャスミン角速度:[$ injector:nomod]
- 6. 角度カルマジャスミンforEach @エラー
- 7. 角1.5カルマジャスミンでのコンポーネントテンプレートユニットテスト
- 8. E2Eテストませスペックiは分度器テストの問題を持って、角2分度器
- 9. Javascript角張った工場説明
- 10. Python unittestフレームワーク:テストの説明
- 11. Rubyは私が説明してインスタンスを持っている
- 12. 角度2.0のデモチュートリアル - 説明
- 13. 角2カスタムパイプの説明
- 14. テスト角度/ジャスミンディレクティブは、私がtemplateUrlが含まれている角度ディレクティブの以下のカルマ/ジャスミンのテストを持っているテンプレートHTML
- 15. カルマジャスミンによる角度テストが失敗しました
- 16. ウォッチ機能は、次のように私は、角度でディレクティブを持って
- 17. 角度ラッパーコンポーネントは、私は次のようになりますディレクティブ持っている追加のディレクティブ
- 18. MiniTestと非ラテンのテストの説明
- 19. Object.assign()奇妙な行動は、私はこのコードを持って説明
- 20. 角での.next()関数の説明
- 21. XML出力ファイルのNUnitテストのテストの説明を表示
- 22. JUnitレポート - テスト方法の説明
- 23. Javaの整数MIN_VALUEの負その後、私は明日のテストを持っていると私は私の本の説明を理解カント
- 24. SpringデータNeo4j Neo.ClientError.Statement.EntityNotFound;説明:私は、次のNeo4jスキーマを持っているID
- 25. 説明のI/Oとは何ですか?process.nextTickとsetImmediate?
- 26. 説明なしの「Error in」角型CLI
- 27. ng-ifに似た角度のディレクティブをテストしています
- 28. 角度2、私は送信ボタンをダブルクリックを防止ディレクティブを持って
- 29. は、私は、次の要素で構成ディレクティブを持って毎回ディレクティブは
- 30. は角度Iは、関数内でこの角度のコードを持って正しく
私はそうすることができると考えました。しかし確かに、1行の単語を変更するために23行のコードを複製せずにこれを行う方法がありますか? – Coop