Unit testing 使用Rhino Mock进行模拟-MVVM
我在测试方法中使用Rhino mock进行模拟。有人能看看测试方法中的TODO部分并帮我模拟一下吗 这是我的服务界面:Unit testing 使用Rhino Mock进行模拟-MVVM,unit-testing,.net-4.0,mocking,rhino-mocks,Unit Testing,.net 4.0,Mocking,Rhino Mocks,我在测试方法中使用Rhino mock进行模拟。有人能看看测试方法中的TODO部分并帮我模拟一下吗 这是我的服务界面: public interface ICustomersServiceAgent { void GetCustomers(EventHandler<GetCustomersCompletedEventArgs> callback); void SaveCustomer(POC.Model.Customer cust, EventHandler<
public interface ICustomersServiceAgent
{
void GetCustomers(EventHandler<GetCustomersCompletedEventArgs> callback);
void SaveCustomer(POC.Model.Customer cust, EventHandler<SaveCustomerCompletedEventArgs> callback);
}
我想在上面的ViewModel中测试SaveCustomerCommand
。
因此,在我的测试方法中,我想模拟iccustomerserviceagent
接口中的void SaveCustomer(POC.Model.cust,EventHandler回调)
方法
这是我的测试方法,请参见ToDo部分
[TestMethod]
public void SaveCustomerCommandTest()
{
var customerServiceMock = MockRepository.GenerateMock<ICustomersServiceAgent>();
var customerVM = new POC.SilverlightClient.ViewModel.CustomerVM(customerServiceMock);
// TO do : Code to mock SaveCustomer method ///////////////////////////////////
var saveCustomerCommand = customerVM.SaveCustomerCommand;
saveCustomerCommand.Execute(null);
Assert.IsTrue(customerVM.IsSaved);
}
[TestMethod]
public void SaveCustomerCommandTest()
{
var customerServiceMock=MockRepository.GenerateMock();
var customerVM=新的POC.SilverlightClient.ViewModel.customerVM(customerServiceMock);
//TO do:模拟SaveCustomer方法的代码///////////////////////////////////
var saveCustomerCommand=customerVM.saveCustomerCommand;
saveCustomerCommand.Execute(空);
Assert.IsTrue(customerVM.IsSaved);
}
有人能解释一下我是如何做到这一点的吗?我不明白你为什么要嘲笑SaveCustomer。私有SaveCustomer方法所做的就是调用您已经在模拟的
ServiceAgent
服务。我假设RelayCommand类调用您在构造函数参数中发送的委托,该参数是对SaveCustomer的调用。您是否尝试过按原样运行问题中的单元测试?我不明白您为什么需要模拟SaveCustomer。私有SaveCustomer方法所做的就是调用您已经在模拟的ServiceAgent
服务。我假设RelayCommand类调用您在构造函数参数中发送的委托,该参数是对SaveCustomer的调用。您是否已尝试按原样运行问题中的单元测试?请尝试以下操作:
customerServiceMock.Stub(sa => sa.SaveCustomer(Arg<POC.Model.Customer>.Is.Anything, Arg<EventHandler<SaveCustomerCompletedEventArgs>>.Is.Anything)).WhenCalled(invocation =>
{
((EventHandler<SaveCustomerCompletedEventArgs>)invocation.Arguments[1])(
customerServiceMock,
new SaveCustomerCompletedEventArgs { Result = true });
});
customerServiceMock.Stub(sa=>sa.SaveCustomer(Arg.Is.Anything,Arg.Is.Anything))。调用时(调用=>
{
((EventHandler)invocation.Arguments[1])(
customerServiceMock,
新建SaveCustomerCompletedEventArgs{Result=true});
});
尝试以下操作:
customerServiceMock.Stub(sa => sa.SaveCustomer(Arg<POC.Model.Customer>.Is.Anything, Arg<EventHandler<SaveCustomerCompletedEventArgs>>.Is.Anything)).WhenCalled(invocation =>
{
((EventHandler<SaveCustomerCompletedEventArgs>)invocation.Arguments[1])(
customerServiceMock,
new SaveCustomerCompletedEventArgs { Result = true });
});
customerServiceMock.Stub(sa=>sa.SaveCustomer(Arg.Is.Anything,Arg.Is.Anything))。调用时(调用=>
{
((EventHandler)invocation.Arguments[1])(
customerServiceMock,
新建SaveCustomerCompletedEventArgs{Result=true});
});
Yes。但它不起作用,因为SaveCustomer方法不模拟。它只模拟ICCustomersServiceAgent。因此我想模拟SaveCustomer方法。不幸的是,我不能这样做。如果您编辑您的问题来描述单元测试如何“不起作用”,那么人们将了解更多有关您尝试做什么的信息,并且可能能够提供帮助。是的,但它不起作用,因为SaveCustomer方法不模拟。它只模拟ICCustomersServiceAgent。因此我想模拟SaveCustomer方法。不幸的是,我不能这样做。如果您编辑您的问题来描述单元测试如何“不起作用”,那么人们将了解有关您尝试做什么的更多信息,并且可能能够提供帮助。