F # - Как вызвать Moq ReturnsAsync ()? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть функция, которая возвращает Task<bool> (C #).

Task<bool> Update(MemberMarketUpdate memberMarketUpdate);

Я пытаюсь смоделировать это, используя Moq (F #).

let verifyUpdate(update:MemberMarketUpdate) =
    update.Id |> should equal "market id"

let setup = associationRepository.Setup (fun r -> r.Update(It.IsAny<MemberMarketUpdate>() ))
setup.Callback(fun update -> verifyUpdate update) |> ignore
//setup.Returns(Task.FromResult(True)) <- does not compile
//setup.ReturnsAsync(True)  <- does not compile

Я не могу использовать ReturnsAsync(True), чтобы высмеивать результат Task<bool>.

Ошибка говорит:

Нет совпадений перегрузок для метода ReturnsAsync.Доступные перегрузки показаны ниже.
(35 перегрузок здесь)

Какой правильный синтаксис?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Я попытался заставить ваш код проверить тип в простом файле сценария F #, и единственное, что мне нужно было сделать, чтобы это работало, - это изменить ваш True в верхнем регистре true.

Мой полный скрипт, который прекрасно проверяет тип, включая все необходимые определения и ссылки, выглядит так:

#r @"packages\Moq\lib\net45\Moq.dll"
#r @"packages\NUnit\lib\net45\nunit.framework.dll"
#r @"packages\FsUnit\lib\net46\FsUnit.NUnit.dll"
#r @"packages\System.Threading.Tasks.Extensions\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll"
open Moq
open FsUnit
open System.Threading.Tasks

type MemberMarketUpdate = 
  { Id: string }

type IAssociationRepository = 
  abstract Update : MemberMarketUpdate -> Task<bool>

let verifyUpdate(update:MemberMarketUpdate) =
    update.Id |> should equal "market id"

let associationRepository = new Mock<IAssociationRepository>();
let setup = associationRepository.Setup (fun r -> r.Update(It.IsAny<MemberMarketUpdate>() ))
setup.Callback(fun update -> verifyUpdate update) |> ignore
setup.Returns(Task.FromResult(true))
setup.ReturnsAsync(true)
0 голосов
/ 12 февраля 2019

Я не очень хорошо знаком с f #, но, если возможно, попробую все это одним беглым звонком, например, следующим:

associationRepository
    .Setup(fun r -> r.Update(It.IsAny<MemberMarketUpdate>()))
    .Callback(fun update -> verifyUpdate update)
    .ReturnsAsync(True) |> ignore
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...