Тестирование, что событию присвоили EventHandler

На самом деле, контекстное меню не дает вам, ваш 100% принятый ответ, вы можете остановить элемент контекстного меню, щелкнув правой кнопкой мыши. Вы показываете, что пользовательский код меню здесь, может быть, это поможет вам. ссылка: http://jsfiddle.net/6cqhsfvL/1/ или выше код

$('.title').on('click', function(){
	  $('.nav').slideDown();
	});

	$('.nav').on('click', function(){
		$(this).slideUp();
	});

	$('.nav a').on("mousedown",function(e){
		e.preventDefault();
		if(event.which==3){
			$('#item li a').attr('href', $(this).attr('href'));
		}
	});

	$('.nav a').bind("contextmenu",function(e){
	  	e.preventDefault();
		$("#cntnr").css("left",e.pageX);
		$("#cntnr").css("top",e.pageY);     
		$("#cntnr").fadeIn(200,startFocusOut());    
	});
    $("#items").on('click', 'a', function(event) {
	    event.stopPropagation();
	    $('.nav').slideUp();
	    $("#cntnr").hide(); 
	    window.open($(this).attr('href'), '_blank'  );
    });

	function startFocusOut(){
	  $(document).on("click",function(){
	  $("#cntnr").hide();        
	  $(document).off("click");
	  });
	}
.title{cursor:pointer;}
.nav{display:none;}

#items{
  list-style:none;
  margin:0px;
  margin-top:4px;
  padding-left:10px;
  padding-right:10px;
  padding-bottom:3px;
  font-size:17px;
  color: #333333;
}
#cntnr{
  display:none;
  position:fixed;
  border:1px solid #B2B2B2;
  width:150px;      background:#F9F9F9;
  box-shadow: 3px 3px 2px #E9E9E9;
  border-radius:4px;
}
li{
  padding: 3px;
  padding-left:10px;
}
#items :hover{
   color: white;
  background:#284570;
  border-radius:2px;
}

	
MENU

5
задан mattcole 7 January 2009 в 11:30
поделиться

4 ответа

Не опрос, что Вы симулируете с этим, единственный способ протестировать и перечислить зарегистрированные события, состоит в том если Ваш регистрировать их в Вашем собственном наборе.

Посмотрите этот пример:

public class MyChangePersonService : IChangePersonService
{
    private IList<EventHandler> handlers;

    private EventHandler _personEvent;

    public event EventHandler PersonCreated
    {
        add
        {
            _personEvent += value;
            handlers.Add(value);
        }

        remove
        {
            _personEvent -= value;
            handlers.Remove(value);
        }
    }

    public IList<EventHandler> PersonEventHandlers { get { return handlers; } }

    public MyChangePersonService()
    {
        handlers = new List<EventHandler>();
    }

    public void FirePersonEvent()
    {
        _personEvent(this, null);
    }
}

Затем Вы могли получить доступ к зарегистрированным обработчикам с опорой PersonEventHandlers.

Можно ли реализовать что-то вроде этого?

2
ответ дан 15 December 2019 в 06:37
поделиться

Это смотрит на меня как, Вы пытаетесь в замок модульного теста Windsor. Так как это, вероятно, уже имеет модульные тесты, я думаю, что это - трата усилия. Вы были бы более обеспеченным тестированием, что Ваш объект генерирует соответствующие события в корректные времена (вероятно, путем регистрации фиктивного объекта как обработчика событий).

1
ответ дан 15 December 2019 в 06:37
поделиться

Это не действительно поблочное тестирование, это - интеграционный тест. И я не тестирую замок Windsor, а скорее мою конфигурацию его. Я тестирую это, все мои отделенные классы поднимаются трубку, как я предназначаю.

В конечном счете я хочу протестировать ту свою конфигурацию, правильно поднимает трубку события, как я хочу, но я не уверен, что C# позволит мне, не изменяя мой API, как говорит Yuval.

0
ответ дан 15 December 2019 в 06:37
поделиться

Кажется, что Вы пытаетесь подталкивать некоторую информацию из своего объекта, чтобы утверждать, что это - одна вещь или другой. Обратите внимание, что это - не обязательно поблочное тестирование, потому что Вы не тестируете функциональность.

Если необходимо протестировать это, кажется, что необходимо будет открыть общедоступный API в IChangePersonService для получения зарегистрированных обработчиков событий.

0
ответ дан 15 December 2019 в 06:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: