alg*_*mus 5 c# delegates assert moq mocking
定义了一个接口
public interface IHandlerViewModel {
EventHandler ClearInputText { get; }
}
Run Code Online (Sandbox Code Playgroud)
我想测试一些方法是否调用ClearInputText.为此,我做了类似的事情
SomeType obj=new SomeType();
bool clearCalled = false;
var mockHandlerViewModel=new Mock<IHandlerViewModel>();
mockHandlerViewModel.Setup(x => x.ClearInputText).Returns(delegate { clearCalled = true; });
obj.Call(mockHandlerViewModel.Object);//void Call(IHandlerViewModel);
Assert.IsTrue(clearCalled);
Run Code Online (Sandbox Code Playgroud)
哪个失败了.只是代表没有被调用.请帮我解决一下这个.
Ste*_* Py 12
你给出的例子不清楚.你实际上是在测试你自己的模拟.
在模拟代理作为依赖项传递给被测试对象的情况下,您不会设置事件处理程序,而是将其提升.
var mockHandlerViewModel = new Mock<IHandlerViewModel>();
var objectUnderTest = new ClassUnderTestThatTakesViewModel(mockHandlerViewModel.Object);
// Do other setup... objectUnderTest should have registered an eventhandler with the mock instance. Get to a point where the mock should raise it's event..
mockHandlerViewModel.Raise(x => x.ClearInputText += null, new EventArgs());
// Next, Assert objectUnderTest to verify it did what it needed to do when handling the event.
Run Code Online (Sandbox Code Playgroud)
模拟使用.Raise()替换事件源,或者它们替换将在测试事件下使用另一个类的对象(断言事件被引发),在这种情况下,您使用.Callback()来记录"处理"本地标志变量中的事件.
| 归档时间: |
|
| 查看次数: |
4977 次 |
| 最近记录: |