「新しいAPI」(ServiceStack.ServiceInterface.Serviceから継承)を使用して、ServiceStackを使用して作成されたいくつかのサービスクラスのユニットテスト(NUnitを使用)を作成することに興味があります。サービスの Db プロパティは、AppHost を使用して ASP.NET アプリケーションでホストされている場合は適切に自動配線されますが、その環境の外で実行する場合の適切な手法を理解できないようです。ServiceStack にはさまざまなテスト関連の名前空間とクラスがありますが、単純に接続ファクトリを直接設定してからさまざまな IDbConnection 拡張メソッドを呼び出すのではなく、サービスの Db プロパティが挿入されている明確な例を見つけることができません (挿入、選択など)。
テスト クラスを ServiceStack.ServiceInterface.Testing.TestBase から継承させ、その Configure メソッドをオーバーライドして IDbConnectionFactory を登録し (":memory:" を使用)、OrmLiteConfig.DialectProvider = SqliteDialect.Provider;
TestFixtureSetUp で設定しようとしましたが、NullReferenceException が発生し続けます。サービス メソッドを呼び出します (ServiceStack.ServiceInterface.Service.get_Db() で)。Funq コンテナは何も自動配線していないようです。
SQLite 自体は適切に設定されています。これは、サービス クラスをバイパスして IDbConnection を直接呼び出す単純な単体テストで確認できます。
私は何が欠けていますか?
編集
ServiceStack サービスの単体テストには、ホストとクライアントの存在が必要なようですが、シリアライゼーション コストを回避するためにこれを設定する方法があるようです (ここに示すように、DirectServiceClient を使用) 。私の場合、それを機能させることに成功しました。AppHostHttpListenerBase アプローチ (こちらを参照) を使用してこれを機能させることができましたが、これはユニット 1 というよりも統合テストです (したがって、遅くなります)。