Модульное тестирование Silverlight, работа с асинхронными вызовами во вложенных методах - PullRequest
0 голосов
/ 04 мая 2011

При создании модульных тестов для silverlight, похоже, в инфраструктуру тестирования встроены функции, помогающие с асинхронными вызовами, но только в рамках метода test.Что если в дочернем методе того, который вы вызываете, есть асинхронный вызов.

В качестве примера мы используем Specflow для тестирования наших ViewModels. Мы хотим вызвать метод Execute команды, и эта команда затем асинхронно вызывает веб-сервис.Как я могу убедиться, что команда while завершена перед подтверждением результатов?

Например, это команда

    [Asynchronous]
    [When(@"I press calculate")]
    public void WhenIPressCalculate()
    {
        _helloWorldViewModel.CalculateCommand.Execute(null);
    }

Мне нужно дождаться завершения всей команды, прежде чем продолжить.

Ответы [ 2 ]

0 голосов
/ 02 июня 2011

Цикл не работает при выполнении вызова сетевой службы, поскольку обратный вызов передается в поток пользовательского интерфейса, если он выполняет цикл для условия, он создает тупик, поскольку обратный вызов ожидает завершения потока.

Так или иначе, мы решили эту проблему.Оказывается, ребята из specflow работали над этим одновременно и находят решение.Мы работали с предварительной версией сборки.

Я написал об этом в блоге запись http://rburnham.wordpress.com/2011/05/13/testing-silverlight-asynchronous-code-with-specflow/

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

0 голосов
/ 01 июня 2011

сделать цикл в том же методе с условием выхода, что выполнение завершено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...