2010-02-19 13 views
1

J'utilise l'article de Joshua Flanagan "Auto Mocking Explained" comme guide. Dans l'article il y a une section appelée "Les mêmes tests, avec automocker ressemblerait à ceci". J'ai utilisé cette information pour construire le code pour exécuter le automocker.
Comme vous pouvez le voir ci-dessous, la réponse est une liste renvoyée par le BLL. La réponse a une rangée dedans; Cependant, tous les champs sont NULL. Donc, le test de boo échoue. Tous les conseils et astuces seraient grandement appréciés.Rhino AutoMocker et Stubs

[Test] 
     public void GetStaffListAndRolesByTeam_CallBLLWithDALStub() 
     { 
      // Build List<> data for stub 
      List<StaffRoleByTeamCV> stubData = new List<StaffRoleByTeamCV>(); 
      StaffRoleByTeamCV stubRow = new StaffRoleByTeamCV(); 
      stubRow.Role = "boo"; 
      stubRow.StaffId = 12; 
      stubRow.StaffName = "Way Cool"; 
      stubData.Add(stubRow); 

      // create the automocker 
      var autoMocker = new RhinoAutoMocker<PeteTestBLL>(); 

      // get instance of test class (the BLL) 
      var peteTestBllHdl = autoMocker.ClassUnderTest; 

      // stub out call to DAL inside of BLL 
      autoMocker.Get<IPeteTestDAL>().Stub(c => c.GetStaffListAndRolesByTeam("4146")).Return(stubData); 

      // make call to BLL this should return stubData 
      List<StaffRoleByTeamCV> answer = peteTestBllHdl.GetStaffListAndRolesByTeam("4146"); 

      // do simple asserts to test stubData present 
      // this passes 
      Assert.IsTrue(1 == answer.Count, "Did not find any rows"); 
      // this fails 
      Assert.IsTrue(answer[0].Role == "boo", "boo was not found"); 
     } 

J'ai essayé d'utiliser MockMode.AAA mais toujours pas de joie

Répondre

1

Une nouvelle version d'AutoMocker (1.0.3) est disponible. La nouvelle version prend en charge le mode relais comme dans cet exemple.

[TestMethod] 
    public void ShouldSupportOrderedTest() 
    { 
     //Arrange 
     var autoMocker = new RhinoAutoMocker<CustomerUpdater>(); 

     var mockRepository = autoMocker.Repository; 

     using (mockRepository.Ordered()) 
     { 
      autoMocker.Get<ICustomerDataProvider>().Expect(x => x.GetCustomer(Arg<int>.Is.Anything)).Return(new CustomerItem()); 
      autoMocker.Get<ICustomerDataProvider>().Expect(x => x.UpdateCustomer(Arg<CustomerItem>.Is.Anything)); 
      autoMocker.Get<ILogWriter>().Expect(x => x.Write(Arg<string>.Is.Anything)); 
      autoMocker.Get<ILogWriter>().Expect(x => x.Write(Arg<string>.Is.Anything)); 
      autoMocker.Get<IMailSender>().Expect(x => x.SendMail(Arg<string>.Is.Anything, Arg<string>.Is.Anything)); 
     } 

     //Act 
     autoMocker.ClassUnderTest.UpdateCustomerName(1, "Frank", "[email protected]"); 

     //Assert 
     ExceptionAssert.Throws<ExpectationViolationException>(mockRepository.VerifyAll,"IMailSender.SendMail(anything, anything); Expected #1, Actual #0.\r\nILogWriter.Write(anything); Expected #1, Actual #0.\r\n"); 

    } 
0

Oui c'était le cas pour la version précédente. Mais a été modifié pour prendre en charge les tests ordonnés dans la version 1.0.3.