Ninject를 사용하는 프로젝트에 대한 NUnit 테스트를 만들려고합니다. Ninject에이 구성 제공자 라이선스 계약이 단순화 된 버전과 유사하므로, Nuget를 통해 설치 :
Ninject를 통해 설치된 Ninject 프로젝트 테스트 - WebActivate 동작
[assembly: WebActivator.PreApplicationStartMethod(typeof(NinjectMVC3), "Start")]
[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(NinjectMVC3), "Stop")]
public static class NinjectMVC3
{
private static readonly Bootstrapper Bootstrapper = new Bootstrapper();
private static IKernel _kernel;
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
DynamicModuleUtility.RegisterModule(typeof(HttpApplicationInitializationModule));
Bootstrapper.Initialize(CreateKernel);
}
public static void Stop()
{
Bootstrapper.ShutDown();
}
}
나는 그 방법은 내 시작 테스트 클래스에서 호출하려는. 나는 시도 :
[TestFixture]
public class TestBase
{
[SetUp]
public void Setup()
{
NinjectMVC3.Startup();
}
[TearDown]
public void TearDown()
{
NinjectMVC3.TearDown();
}
}
내가 수동으로 WebActivator에 의해 관리되는 메소드를 호출하는 것을 시도하고 있기 때문에이 작동하지 않습니다. 그래서 저는 WebActivator가 '적절한 시간에'메서드를 호출하도록 지시하는 방법을 찾고 있습니다. MVC 웹 프로젝트 (그리고 Ninject 용 WebActivator를 사용함)와 MVC 웹 프로젝트 테스트 프로젝트 중 하나 인 두 개의 프로젝트가 있음을 상기시켜드립니다. 내 설치 방법의 구현을 변경하여 WebActivator를 호출하려고했습니다.
[SetUp]
public void Setup()
{
WebActivator.ActivationManager.Run();
}
작동하지 않습니다. 지금까지이 호출 WebActivator이 비슷한해야 아래에 내가 알고있는 것처럼 :
foreach (var assemblyFile in Directory.GetFiles(HttpRuntime.BinDirectory, "*.dll")) {
var assembly = Assembly.LoadFrom(assemblyFile);
foreach (PreApplicationStartMethodAttribute preStartAttrib in assembly.GetCustomAttributes(
typeof(PreApplicationStartMethodAttribute),
inherit: false)) {
preStartAttrib.InvokeMethod();
}
}
를 그래서 나는 어셈블리를 찾을 수 없다고 생각한다. 따라서 질문은 - WebActivator를 추가 어셈블리를 통해 검사하고 '적절한 시간에'일부 메서드를 실행하는 방법은 무엇입니까? 또는 어쩌면 내가 여기 오해하고, 내 Ninject 프로젝트를 테스트하기 위해 다른 접근 방식을 취해야합니까?
WebActivator가없는 솔루션을 테스트 할 수 있지만 최근 널리 사용되어 왔기 때문에이를 해결하고 원하는 작업을 수행하는 방법을 배우려합니다.
많은 Nuget 패키지에서 WebActivator를 사용하기 때문에 의견을 보내 주셨지만, WebActivator를 사용하는 것이 좋습니다. 상자에서 직접 테스트하는 방법을 알고있는 것이 좋습니다. –