2015-01-02 6 views
1

Я хочу, чтобы написать тест и сохранить пользователя в SQL ce.This мой тест:Asp.net Identity Integration Test

using (ApplicationContext context = new ApplicationContext()) 
     { 
      var email = "[email protected]"; 
      var username = "shahrooz"; 
      var customUserStore = SmObjectFactory.Container.GetInstance<IUserStore<ApplicationUser, int>>(); 
      var customRoleStore = SmObjectFactory.Container.GetInstance<IApplicationRoleManager>(); 
      var smsService = SmObjectFactory.Container.GetInstance<IIdentityMessageService>(); 
      var emailService = SmObjectFactory.Container.GetInstance<IIdentityMessageService>(); 
      ApplicationUserManager manager = new ApplicationUserManager(customUserStore, customRoleStore, new DpapiDataProtectionProvider(), smsService, emailService); 
      context.Database.Connection.Open(); 
      manager.CreateAsync(new ApplicationUser { Email = email, UserName = username }, Guid.NewGuid().ToString()).Wait(); 
      var applicationUser = context.Users.Find(1); 
      Assert.IsNotNull(applicationUser); 
      Assert.IsTrue(applicationUser.Email == email); 
      Assert.IsTrue(applicationUser.UserName == username); 
      context.Database.Connection.Close(); 
     } 

Но CreateAsync Dont хранить любую вещь в базе данных. В чем моя проблема?

+0

Имеет ли приложение app.config проекта тестирования интеграции все правильную информацию о строках соединения? – danludwig

+0

@ danludwig Да, я установил –

ответ

1

Эта линия:

manager.CreateAsync(..... 

этот метод возвращает объект IdentityResult, который содержит логическое значение для Successful и список Errors, что вы должны инспектировать. Осмотрите этот объект на наличие ошибок и если пользователь был создан.