httpサーバの機能をテストしようとしています。モック、スタブ、および偽の概念に初めて触れたのです。私はこの本を読んでいます。それは、スナップショットのようなある瞬間に複雑なオブジェクトの状態を記述し、実際には実際のものと同じようにオブジェクトをテストすることです。右?これは分かります。私が理解できないことは、単体テストの記述のポイントと、モックオブジェクトで完全に記述する特定のケースのアサーションです。引数の期待値を設定して嘲笑オブジェクトの値を返し、それらの正確な値をテストすると、テストは常に成功します。私を修正してください。私はここで何かを逃していることを知っているユニットテストではどういうことがありますか?
0
A
答えて
0
モック、スタブまたは類似のものは、実際の実装の代わりになります。
モックのアイデアは基本的に、孤立した環境でコードをテストし、偽の実装の依存関係を置き換えることです。たとえば、Javaでは、我々は法のセーブPersonService番号をテストしたいとします
class PersonService {
PersonDAO personDAO;
// Set when the person was created and then save to DB
public void save(Person person) {
person.setCreationDate(new Date());
personDAO.save(person);
}
}
良いaproachは、このようなユニットテストを作成している。別の言葉で
class PersonServiceTest {
// Class under test
PersonService personService;
// Mock
PersonDAO personDAOMock;
// Mocking the dependencies of personService.
// In this case, we mock the PersonDAO. Doing this
// we don't need the DB to test the code.
// We assume that personDAO will give us an expected result
// for each test.
public void setup() {
personService.setPersonDao(personDAOMock)
}
// This test will guarantee that the creationDate is defined
public void saveShouldDefineTheCreationDate() {
// Given a person
Person person = new Person();
person.setCreationDate(null);
// When the save method is called
personService.save(person);
// Then the creation date should be present
assert person.getCreationDate() != null;
}
}
、あなたがモックを使用する必要があります期待される結果を返すように設定されたり、いくつかの振る舞いをアサートすることができる "アクター"にあなたのコードの依存関係を代入することができます。
関連する問題
- 1. document.normalizeとはどういうことがありますか?
- 2. このスニペットはスカラーではどういうことがありますか?
- 3. R CMD Sweave --pdfとはどういうことがありますか?
- 4. ユニットテストでオブジェクトが "Backbone.Model"であるかどうかをテストする方法はありますか?
- 5. ジャスミンのようなPHPユニットテストでtoHaveBeenCalledWithはありますか?
- 6. Google App Engine + GWT + Eclipse:ユニットテストはどこにありますか?
- 7. これが弱いエンティティであるかどうかはどのようにわかりますか?
- 8. そこにはどのようなアプリケーションコントローラがありますか?
- 9. Windowsフォームスレッドではどういうことが起こっていますか?
- 10. このAttributeErrorとはどういう意味ですか? 'int'オブジェクトに属性 'items'がありません
- 11. webpack " - watch" vs "--hot":どういう違いがありますか?
- 12. 結果はどういう意味がありませんか?
- 13. C#:あなたはどのようにユニットテストGetHashCodeですか?
- 14. このようなSilverlightブラウズコントロールはどこにありますか?
- 15. このような$ PSはどこにありますか?
- 16. TableViewが空であるかどうかはどのように知ることができますか?
- 17. このユニットテストについてはどうすればよいですか?
- 18. の問題がありますが、このエラーはどういう意味ですか?
- 19. どのような違いがありますかmodelEventsとthis.model.on
- 20. このコマンドではどういうことが起こりますか:mvn -pl <project list>
- 21. "global"という名前の変数はどこにありますか
- 22. TCPはIPの上にありますが、これはどういう意味ですか?
- 23. タスクがフォークされたときにはどういうことが起こりますか?
- 24. アクティブなスレッドがあるかどうかはどのように知ることができますか?
- 25. マウスがウィジェット上にあるかどうかはどのように知ることができますか?
- 26. オープンリレーがあるかどうかはどうすればわかりますか?
- 27. redux-mock-storeによるユニットテスト - このユニットテストをパスするにはどうしたらいいですか?
- 28. PDOトランザクションにはどのようなコードがありますか?ここ
- 29. サービス層と呼ばれるアクションメソッドがあるかどうかをチェックするユニットテスト
- 30. PHPでどのようにしてデータベースを再作成することができますか(ユニットテストなど)