Я пишу код F # и тесты в xUnit 1.9.Тестирование F # async рабочих процессов с поддержкой поддержки xUnit.net
Для нормальной работы с синхронизацией я просто возвращаю unit
, и все хорошо; но теперь я переношу синхронизацию, чтобы быть рабочими потоками async
.
Другими словами, мой простой AAA становится явным Async
использование выталкивается в него, как я реорганизовать систему:
let [<Fact>] ``Can consume using NEventStore InMemory``() =
let store = NesGateway.createInMemory()
let finalDirection = playCircuit store |> Async.RunSynchronously // <----- YUCK
test <@ CounterClockWise = finalDirection @>
Чтобы исправить это, я хочу, чтобы сделать тело теста быть async
. Однако, насколько мне известно, xUnit.net управляет только методами, возвращающими Task
-развернутыми типами, и, следовательно, мне нужен безопасный способ, чтобы мое тестовое тело async
было удобно обернуто для бегуна xUnit.net, чтобы поднять его и обработать соответствующим образом ,
Каков наилучший способ выразить мой тест выше?
Почему «гадость»? Что не так с этим кодом? –
https://gist.github.com/mausch/8943d1b0f884f88bd8ae –
@MauricioScheffer Прохладная идея. Я думал об Exude, когда увидел ваш код, прежде чем я прочитал ваше упоминание. Yuck ссылается на то, что у меня может быть тест синхронизации с явным материалом «Async», но обнаружите, что наличие теста «async», как и в вашем примере, дает что-то более чистое (одна из причин заключается в том, что тестовый код соответствует строке). Я согласен с тем, что в вырожденном случае чистого AAA большая часть мавризмы заключается в том, следует ли посыпать в «Async», вместо того, чтобы переключать тест в целом на «async». (Мне нравится идея и внешний вид много Fuchu и тому подобное, но «еще нет» :) –