2017-08-02 7 views
0

httpサーバの機能をテストしようとしています。モック、スタブ、および偽の概念に初めて触れたのです。私はこの本を読んでいます。それは、スナップショットのようなある瞬間に複雑なオブジェクトの状態を記述し、実際には実際のものと同じようにオブジェクトをテストすることです。右?これは分かります。私が理解できないことは、単体テストの記述のポイントと、モックオブジェクトで完全に記述する特定のケースのアサーションです。引数の期待値を設定して嘲笑オブジェクトの値を返し、それらの正確な値をテストすると、テストは常に成功します。私を修正してください。私はここで何かを逃していることを知っているユニットテストではどういうことがありますか?

答えて

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; 
    } 
} 

、あなたがモックを使用する必要があります期待される結果を返すように設定されたり、いくつかの振る舞いをアサートすることができる "アクター"にあなたのコードの依存関係を代入することができます。

関連する問題