2013-08-29 3 views
3

У меня возникли проблемы с модулем тестирования поведения, которое я написал. Поведение выглядит следующим образом:Модуль Тестирование поведения TextBox

NumericTextBoxBehavior : Behavior<TextBox> 
{ 
//handles few events like TextChanged ,PreviewTextInput , PreviewKeyDown , PreviewLostKeyboardFocus 
//to give make it accept numeric values only 

} 

Хотя модульное тестирование того же я написал этот код

TextBox textBoxInvoker = new TextBox(); 
NumericTextBoxBehavior target = new NumericTextBoxBehavior(); 
System.Windows.Interactivity.Interaction.GetBehaviors(TextBoxInvoker).Add(target); 

Теперь, чтобы поднять событие, я должен позвонить

textBoxInvoker.RaiseEvent(routedEventArgs) 

это арг события ROUTED в turn принимает маршрутизируемое событие в качестве аргумента.

Пожалуйста, помогите мне, как создать макет RoutedEventArgs, чтобы поднять событие, и далее Unit тестирует поведение.

Заранее спасибо.

ответ

1

Возможно, это будет поздно, но вот способ модульного тестирования, выполняющий команду при вызове Keyboard Enter.

Вы можете найти более подробную информацию here и here

[TestFixture] 
    public class ExecuteCommandOnEnterBehaviorFixture 
    { 
    private ExecuteCommandOnEnterBehavior _keyboardEnterBehavior; 
    private TextBox _textBox; 
    private bool _enterWasCalled = false; 


    [SetUp] 
    public void Setup() 
    { 
     _textBox = new TextBox(); 
     _keyboardEnterBehavior = new ExecuteCommandOnEnterBehavior(); 
     _keyboardEnterBehavior.ExecuteCommand = new Microsoft.Practices.Composite.Presentation.Commands.DelegateCommand<object>((o) => { _enterWasCalled = true; }); 
     _keyboardEnterBehavior.Attach(_textBox); 
    } 

    [Test] 
    [STAThread] 
    public void AssociatedObjectClick_Test_with_ItemClick() 
    { 
     _textBox.RaiseEvent(
     new KeyEventArgs(
      Keyboard.PrimaryDevice, 
      MockRepository.GenerateMock<PresentationSource>(), 
      0, 
      Key.Enter) { RoutedEvent = Keyboard.KeyDownEvent }); 

     Assert.That(_enterWasCalled); 
    } 
    } 
Смежные вопросы