2010-06-19 12 views
1
var mocks = new MockRepository(); 
var access = new Access(); 
access.ShowRepository = _mocks.Stub<IShowRepository>(); 
access.ShowRepository.Stub(x => x.GetShows()).Return(new List<Show>()); 
var kernel =_mocks.Stub<IKernel>(); 
kernel.Stub(x => x.Get<Access>()).Return(access); 

Cela jette un ArgumentNullException:Comment remplacer IKernel de ninject à l'aide de Rhino Mocks?

Message: La valeur ne peut être nulle.
Nom du paramètre: Source

Trace de pile: à System.Linq.Enumerable.Cast [TResult] (source IEnumerable) à Ninject.ResolutionExtensions.Get [T] (racine IResolutionRoot, iParamètre [] paramètres) à MediaMover.Unit.Tests.ViewModelTests.OptionsViewModelTests.b__1 (IKernel x) dans C: \ Utilisateurs \ Dave \ Documents \ Visual Studio 2010 \ Projets \ Gigatube \ MediaMover.Unit.Tests \ ViewModelTests \ OptionsViewModelTests.cs: ligne 33 à Rhino.Mocks.RhinoMocksExtensions.Expect [T, R] (T Mock, action 2 action) at Rhino.Mocks.RhinoMocksExtensions.Stub[T,R](T mock, Function 2 action) à MediaMover.Unit.Tests.ViewModelTests.OptionsViewModelTests.Initialize() dans C: \ Users \ Dave \ Document s \ Visual Studio 2010 \ Projets \ Gigatube \ MediaMover.Unit.Tests \ ViewModelTests \ OptionsViewModelTests.cs: ligne 33

+1

Quelle ligne fait exactement jeter l'exception? – dtb

+0

Dernière ligne, en particulier, le x.Get () – Dave

+0

Pourriez-vous coller l'ensemble de la pile pour l'exception? Pourrait être un bug dans Rhino Mocks .... – Grzenio

Répondre

1

J'ai été capable de résoudre ce problème, j'ai dû créer un module de test et un fournisseur de test et passer mes mocks à travers ceux-ci.

class DbAccessProvider : Provider<Access> 
    { 
     public Access DbAccess { get; set; } 
     protected override Access CreateInstance(IContext context) 
     { 
      return DbAccess; 
     } 
    } 

class TestModule : NinjectModule 
    { 
     public DbAccessProvider DbAccessProvider { get; set; } 
     public override void Load() 
     { 
      Bind<Access>().ToProvider(DbAccessProvider); 
     } 
    } 

Voici ma configuration de mon test:

access = new Access(); 
access.SettingsRepository = MockRepository.GenerateStub<ISettingsRepository>(); 
access.ShowRepository = MockRepository.GenerateStub<IShowRepository>(); 
access.SettingsRepository.Stub(x => x.GetById(1)).Return(_settings); 
DbAccessProvider dbAccessProvider = new DbAccessProvider(); 
dbAccessProvider.DbAccess = access; 
TestModule testModule = new TestModule(); 
testModule.DbAccessProvider = dbAccessProvider; 
var kernel = new StandardKernel(testModule); 
target = new OptionsViewModel(kernel);