私は拡張するべきプロジェクトには新しく、完全に理解できないシステムの問題をTDDで迅速に認識することにしました。Servicestack Funqを使用するDBServiceのテスト方法IOC
DBService
と呼ばれるクラスがあり、すべてのdbアクセスを「カプセル化」します。たとえば、getAllCustomers
というメソッドがあり、これはCustomers
のリストを返します。
public class DBService
{
public IDbConnectionFactory DBFactory {
get { return DI.Container.Resolve<IDbConnectionFactory>(); }
}
public List<Customer> GetAllCustomers()
{
try
{
using (var connection = DBFactory.OpenDbConnection())
{
var dbResult = connection.Select<Customer>();
// code ommitted
}
}
catch (Exception e)
{
// code ommitted
}
}
}
もう一つの問題は、彼らが存在しない場合(ServiceStack AppHost.Configure
で)開始時にすべてのテーブルが作成されていることである、といくつかのために:これは(これは、より良い理解のための単なる一例である)のようになります。いくつかの列などがある場合はテーブルが追加されます(これはおそらく後で追加された変更です)
私は現在、顧客を拡張して別のフィールドを追加する必要がありますが、アドレスはTDDスタイルで行いますどのように考えている。
- 私はServiceStack 3.9.74
を使用していますので、私はそう私のオプションはここで何しているOrmLiteConnectionFactory
ため:memory:
接続文字列を使用することはできません私の知る限りゲッターが
DBFactory
を注入することはできません?
はい私は、サービスロケータのアンチパターンは避けようとしているものであることに同意します。私はちょうど多くのリファクタリングがなくても簡単な方法があると考えていました。 – zlZimon
それは[テクニカル債務](https://www.google.com/search?q=technical+debt)の問題です。それは常にローンを呼びます。 – Nkosi