2012-01-12 50 views
2

我刚开始使用Rhino mocks,但我很难做到这一点。嘲笑EF调用时出错

这是我正在测试的功能。

public bool IsUserExists(string emailAddress) 
{ 
    return _repository.IsUserExists(emailAddress); 
} 

这里是我的测试,我写的,当实际的通话目前我们使用EF制作库的调用由

[TestClass] 
public class UserServiceTest 
{ 
    private MockRepository _mockRepository; 
    private IUserRepository _userRepository; 
    private IUserService _userService; 
    public UserServiceTest() 
    { 
     _mockRepository = new MockRepository(); 
     _userRepository = MockRepository.GenerateMock<IUserRepository>(); 
     _userAccntService = new UserAccntService(); 
    } 

    [TestMethod] 
    public void Should_return_true_IfUserWithEmailExists() 
    { 
     var emailaddress = "[email protected]"; 

     _userRepository.Stub(x => x.IsUserExists(emailaddress)).Return(true); 

     bool ifUserExists = _userAccntService.IsUserAcctExists(emailaddress); // throws! 

     Assert.AreEqual(ifUserExists,true); 

    } 
} 

目前失败。 当我试图测试这种方法时,实际上调用函数时失败。 我在拨打_userAccntService.IsUserAcctExists时遇到了entitycommandexecution错误。

+1

'_userRepository'是如何创建的? – 2012-01-12 05:23:36

+0

你在哪里注入'_userRepository'到'_userAccntService'?你如何创建'_userAccntService'?你需要一个完整的样本。 – BrokenGlass 2012-01-12 05:25:23

+0

@Adam:我已经更新了这个问题,很抱歉 – alice7 2012-01-12 05:35:10

回答

3

您收到实体框架错误的事实意味着_repository指向EF对象的实际实例,而_userRepository是模拟。确保您的_userAccntService的存储库实例正好指向_userRepository

换句话说,在您的测试设置方法,当你构建_userRepository,确保什么被传递到您的_userAccntService构造。


所以,看你的更新代码:

public UserServiceTest() { 
    _mockRepository = new MockRepository(); 
    _userRepository = MockRepository.GenerateMock<IUserRepository>(); 
    _userAccntService = new UserAccntService(); 
} 

_userAccntService不会传递_userRepository,那么怎么能指望当你调用IsUserAcctExists()使用它?此存储库依赖项需要将注入到您的_userAccntService实例中。例如:

public UserServiceTest() { 
    _mockRepository = new MockRepository(); 
    _userRepository = MockRepository.GenerateMock<IUserRepository>(); 
    _userAccntService = new UserAccntService(_userRepository); 
} 
+0

你是绝对正确的。它现在修正了我的错误,并通过测试:) – alice7 2012-01-12 17:40:17

+0

@ alice7 - woot!乐意效劳 :) – 2012-01-12 17:57:38