Ninjectを使用するプロジェクトのNUnitテストを作成しようとしています。
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();
}
}
私はこれらのメソッドは、私の起動テストクラスで呼ばれるようにしたい:構成CLASは、この簡易版に似てNinjectは、Nuget経由でインストールされました。私が試した:
[TestFixture]
public class TestBase
{
[SetUp]
public void Setup()
{
NinjectMVC3.Startup();
}
[TearDown]
public void TearDown()
{
NinjectMVC3.TearDown();
}
}
私は手動WebActivatorによって管理されているメソッドを呼び出すためにしようとしていますので、それは動作しません。だから、私は、WebActivatorにそれらのメソッドを「適切な時間」に呼び出すよう指示する方法を探しています。 MVC Webプロジェクト(そしてWebActivator for Ninjectを使用)とMVC Webプロジェクトのテストプロジェクトの2つがあることを思い出してください。
[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の下に理解したように似た何かをする必要があります。だから問題は、WebActivatorにいくつかの追加のアセンブリをスキャンして、「適切な時間に」メソッドを起動するように、どうすればよいのかということです。あるいは、私はここで誤解しているかもしれません.Ninjectプロジェクトをテストするために、別のアプローチをとるべきでしょうか?
私はWebActivatorなしで私のソリューションをテストすることができますが、最近広く使われているので、私はそれに対処する方法を学びたいと思っています。
コメントをいただきありがとうございますが、WebActivatorを使用することを考えています.Nugetパッケージでは多くのパッケージが使用されているため、WebActivatorを使用することです。 –