public class Example {
private DatabaseThingie myDatabase; //依賴項
public Example() {
myDatabase = new DatabaseThingie();
}
public void doStuff() {
...
myDatabase.getData();
...
}
}
public class Example {
private DatabaseThingie myDatabase;
public Example() {
myDatabase = new DatabaseThingie();
}
public Example(DatabaseThingie useThisDatabaseInstead) {
myDatabase = useThisDatabaseInstead;
}
public void doStuff() {
...
myDatabase.getData();
...
}
}
測試類中可以方便地注入數據庫存根類。
public class ExampleTest {
TestDoStuff() {
MockDatabase mockDatabase = new MockDatabase();
// MockDatabase是DatabaseThingie的子類,因此可以在這里注入它
Example example = new Example(mockDatabase);
example.doStuff();
mockDatabase.AssertGetDataWasCalled();
}
}