我已經實現併爲我的測試用例實現了ODataControllerExtensions類。我選擇使用NSubstitue來模擬DbContext和Entities。如何爲Microsoft.OData.Edm.IEdmModel註冊服務類型
的問題是,當我試圖讓ODataPath
public static IQueryable<TResult> InvokeForTest<T, TResult>(this T controller, HttpMethod method, string entitySetName, string relativeSubPathUri, Func<T, ODataQueryOptions<TResult>, IQueryable<TResult>> expression)
where T : ODataController
where TResult : class
{
return controller.InvokeForTest(method, relativeSubPathUri, x =>
{
var builder = new ODataConventionModelBuilder();
builder.EnableLowerCamelCase();
builder.EntitySet<TResult>(entitySetName);
IEdmModel model = builder.GetEdmModel();
string pathString = string.Format("{0}{1}", entitySetName, relativeSubPathUri);
ODataPath path = new DefaultODataPathHandler().Parse("https://any//", pathString, new ResolverIndirection(controller.Configuration.DependencyResolver));
var context = new ODataQueryContext(model, typeof(TResult), path);
var options = new ODataQueryOptions<TResult>(context, controller.Request);
// Run the expression.
return expression(x, options);
});
}
,當我試圖讓IServiceProvider的
new ResolverIndirection(controller.Configuration.DependencyResolver)
class ResolverIndirection : IServiceProvider
{
private readonly IDependencyResolver _resolver;
public ResolverIndirection(IDependencyResolver resolver)
{
_resolver = resolver;
}
public object GetService(Type serviceType)
{
return _resolver.GetService(serviceType);
}
}
的例外,我得到的是問題出現。
System.InvalidOperationException:沒有爲'Microsoft.OData.Edm.IEdmModel'類型註冊服務。
我想知道是否有辦法註冊EdmlModel的服務類型。如果我以錯誤的方式回答這個問題,我會提出一些建議,告訴我如何做到這一點。
由於