olmadan test edilmiş birimde etkinliği yükseltmelidir Enjekte edilen görüntünün bir olayını ekleyen bir sunum sınıfım var. Şimdi, olay yerinde doğru tepki gösteren sunucuyu test etmek istiyorum. Moq - mock.Raise, Test
Bu
görünüşüdür arayüzü IView olup:public interface IView
{
event EventHandler MyEvent;
void UpdateView(string test);
}
Bu görünüm uygulanması IView ist
public partial class MyView : IView
{
public event EventHandler MyEvent;
public MyView()
{
this.combo.SelectedIndexChanged += this.OnSelectedIndexChanged;
}
public void UpdateView(string test)
{
this.textBox.Text = test;
}
private OnSelectedIndexChanged(Object sender, EventArgs e)
{
if (this.MyEvent != null)
{
this.MyEvent(sender, e);
}
}
}
Bu test edilen sunum ist: Bu test, fikstür
public class MyPresenter
{
private IView _view;
public MyPresenter(IView view)
{
this._view = view;
this._view.MyEvent += this.OnMyEvent;
}
private void OnMyEvent(Object sender, EventArgs e)
{
this._view.UpdateView();
}
}
MyPresenter'ın test edilmesi:
[TestClass]
public class MyPresenterFixture()
{
private MyPresenter testee;
private Mock<IView> mockView;
[TestMethod]
public void ShouldReactOnMyEvent()
{
// arrange
this.mockView = new Mock<IView>(MockBehavior.Strict);
this.testee = new MyPresenter(this.mockView.Object);
// act
this.mockView.Raise(mock => mock.MyEvent += null); // this does not fire
// assert and verify
this.mockView.Verify(mock => mock.UpdateView(It.IsAny<string>());
}
}
Ad 4 kullanıyorum. İstediğimi yapmak mümkün mü?
Saygılarımızla Yannik
Bir dize kabul olarak UpdateView() ilan ettik, ancak sunucu çağırma bir dize argümanı (veya varsayılan) yok
+1. Veya EventArgs.Empty içinde geçirin. Gönderen dışında herhangi bir parametreyi Mock.Raise'e argüman olarak iletmeniz gerekir. Http://madcoderspeak.blogspot.com/2010/01/meet-frameworks-rhino-v-moq-v-jmock.html#scen8 http://code.google.com/p/moq/wiki/QuickStart – Gishu