Saltar al contenido

Moq – mock.Raise debe generar un evento en la unidad probada sin tener una configuración

Marco, miembro de nuestro equipo, nos ha hecho el favor de redactar este artículo porque conoce perfectamente dicho tema.

Solución:

¿No necesitas pasar el argumento? La firma de tu evento es EventHandlercual es
(object sender, EventArgs e).

this.mockView.Raise(mock => mock.MyEvent += null, new EventArgs());

Nunca he usado la sobrecarga que has especificado aquí… aunque no parece correcta.

Ha declarado que UpdateView() acepta un stringpero su invocación de presentador no tiene un string argumento (o por defecto):

Invocación:

private void OnMyEvent(Object sender, EventArgs e)

    this._view.UpdateView();

Declaración:

public void UpdateView(string test)

    this.textBox.Text = test;

Verificación:

mockView.Verify(mock => mock.UpdateView(It.IsAny());

FWIW, creo que el evento en su opinión es un poco engorroso, un cambio simple sería:

public interface IView

    void UpdateText(string test);


public class MyPresenter

    private readonly IView _view;
    public MyPresenter(IView view)
    
        _view = view;
    

    private void SelectItem(string item)
    
        _view.UpdateText(item);
    


public partial class MyView : IView

    private readonly MyPresenter _presenter;

    public MyView()
    
        _presenter = new MyPresenter(this);
        combo.SelectedIndexChanged += OnSelectedIndexChanged;
    

    public void UpdateText(string test)
    
        textBox.Text = test;
    

    private OnSelectedIndexChanged(Object sender, EventArgs e)
    
        _presenter.SelectItem(combo.SelectedItem);
    

Entonces podría simplemente verificar la interacción con la vista sin tener que lidiar con un evento adicional:

    presenter.SelectItem("Burrito!");

    mockView.Verify(mock => mock.UpdateView("Burrito!");

Aquí puedes ver las comentarios y valoraciones de los lectores

Puedes añadir valor a nuestro contenido informacional colaborando tu veteranía en los comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *