2009-10-26 4 views
3

Мне нужно проверить класс, возвращающее значение, зависит от значений из базы данных. Я мог бы просто нажать базу данных в модульном тесте, но эти значения могут измениться. Есть ли стандартное решение?Использование MBUnit для проверки значений по базе данных

ответ

4

Стандартный ответ - переделать класс, чтобы вы могли издеваться над зависимостью. Обычно это делается путем ввода вашего источника данных в качестве интерфейса в ваш класс.

например. Вы можете иметь класс, который действует, как показано ниже

class John 
{ 
    public John() { } 
    public void Load() 
    { 
      // call to db in here e.g SQLCommand 
    }     
} 

Нагрузка зависит от SQLCommand, так что вы всегда должны вызывать дб для этого

Если впрыснуть интерфейс источника данных вы больше гибкости

например

class John 
{ IDataSource _db; 
    public John(IDataSource db) 
    { 
     _db = db; 
    } 
    public void Load() 
    { 
     _db.Load("John"); // IDataSource can now be either SQL 
     //or hardcoded or what ever much easier to test 
    }     
} 

Теперь, если вы не можете/не будет делать, что вы должны относиться к этому испытанию как интеграционный тест. Как насчет того, как вы настроили данные для этого. например вставьте строку, которую вы хотите прочитать. Затем верните данные в исходное состояние. Нижняя сторона этого заключается в том, что ваш тест будет медленным и хрупким.

 Смежные вопросы

  • Нет связанных вопросов^_^