Я новичок в Yesod, и я пытаюсь добавить ожидающий spec в блок withApp
(на данный момент я просто пытаюсь изменить спецификацию, созданную с помощью Yesod scaffholding) ,Как делать ожидающие спецификации в спецификациях Yesod
код выглядит следующим образом:
appSpec :: Spec appSpec :: withApp $ делать описывают "getMyHandlerR" $ сделать это "TODO" $ делать в ожидании
Но я получил следующее сообщение об ошибке сообщение:
Couldn't match type ‘(App, wai-3.2.0:Network.Wai.Middleware)’
with ‘()’
Expected type: SpecWith (TestApp App)
Actual type: SpecWith (Arg Expectation)
In a stmt of a 'do' block: it "todo" $ do { pending }
In the second argument of ‘($)’, namely
‘do { it "todo" $ do { pending } }’
In a stmt of a 'do' block:
describe "upload a file without error"
$ do { it "todo" $ do { pending } }
Если я удалю withApp
, все будет работать. Я понимаю, что withApp
меняет как-то ожидаемый тип, но почему describe
и it
имеют правильный тип, тогда как pending
нет?
Я думаю, вам просто нужно выбросить 'TestApp App' аргумент через' его $ \ _ «Todo» -> pending' или ' это «todo» $ const pending' –
Я могу подтвердить работу исправления MichaelSnoyman – MaxGabriel
Вау, это действительно работает. Я пробовал 'liftIO', но безуспешно. Я все еще удивляюсь, что 'it '" pending' работает вне 'withApp', но не внутри, там, вероятно, есть какая-то магия вывода. @MichaelSnoyman вы могли бы разместить сообщение, чтобы я мог принять его? Разве это не стоило бы добавлять «ypending» или эквивалент? – mb14