Elm测试表明模块声明无效,但为什么?

Elm测试表明模块声明无效,但为什么?,elm,elm-test,Elm,Elm Test,我对Elm非常陌生,我正在使用Elm 0.19启动我的第一个宠物项目 我想在我的应用程序中创建一个JSON解码测试用例。从服务器返回的JSON如下所示(所有内容都在名为Frontend.elm的文件中定义): 我的Elm模型如下所示: type Player = Player String type State = Joinable | Started | Ended type alias Game = { gameId : String , player1 : Ma

我对Elm非常陌生,我正在使用Elm 0.19启动我的第一个宠物项目

我想在我的应用程序中创建一个JSON解码测试用例。从服务器返回的JSON如下所示(所有内容都在名为
Frontend.elm
的文件中定义):

我的Elm模型如下所示:

type Player =
  Player String

type State
  = Joinable
  | Started
  | Ended

type alias Game =
  { gameId : String
  , player1 : Maybe Player
  , player2 : Maybe Player
  , winner : Maybe Player
  , state : State}
gameStateDecoder : Decode.Decoder State
gameStateDecoder =
  string
        |> andThen (\stateAsString ->
           case stateAsString of
                "joinable" ->
                    succeed Joinable
                "ended" ->
                    succeed Ended
                "started" ->
                    succeed Started
                unknown ->
                    fail <| "Unknown game state: " ++ unknown
        )


playerDecoder : Decode.Decoder (Maybe Player)
playerDecoder =
    (maybe string)
        |> andThen (\maybePlayerString ->
            succeed
              <| case maybePlayerString of
                Just player ->
                   Just (Player player)
                _ ->
                   Nothing
        )

gameListDecoder : Decode.Decoder (List Game)
gameListDecoder =
  Decode.list gameDecoder

gameDecoder : Decode.Decoder Game
gameDecoder =
   Decode.map5 Game
        (field "gameId" string)
        (field "player1" playerDecoder)
        (field "player2" playerDecoder)
        (field "winner" playerDecoder)
        (field "state" gameStateDecoder)
我的解码逻辑定义如下:

type Player =
  Player String

type State
  = Joinable
  | Started
  | Ended

type alias Game =
  { gameId : String
  , player1 : Maybe Player
  , player2 : Maybe Player
  , winner : Maybe Player
  , state : State}
gameStateDecoder : Decode.Decoder State
gameStateDecoder =
  string
        |> andThen (\stateAsString ->
           case stateAsString of
                "joinable" ->
                    succeed Joinable
                "ended" ->
                    succeed Ended
                "started" ->
                    succeed Started
                unknown ->
                    fail <| "Unknown game state: " ++ unknown
        )


playerDecoder : Decode.Decoder (Maybe Player)
playerDecoder =
    (maybe string)
        |> andThen (\maybePlayerString ->
            succeed
              <| case maybePlayerString of
                Just player ->
                   Just (Player player)
                _ ->
                   Nothing
        )

gameListDecoder : Decode.Decoder (List Game)
gameListDecoder =
  Decode.list gameDecoder

gameDecoder : Decode.Decoder Game
gameDecoder =
   Decode.map5 Game
        (field "gameId" string)
        (field "player1" playerDecoder)
        (field "player2" playerDecoder)
        (field "winner" playerDecoder)
        (field "state" gameStateDecoder)
我不明白我做错了什么。模块在
Frontend.elm
中的定义如下:

[
    {
        "gameId": "game1",
        "player1": "player1",
        "player2": "player2",
        "winner": "player1",
        "state": "ended"
    },
    {
        "gameId": "game3",
        "player1": "player1",
        "state": "joinable"
    }
]
module Frontend exposing (gameListDecoder, State(..), Game, Player(..))
我可以使用以下方法很好地编译它:

$ elm make src/main/elm/Frontend.elm --output src/main/resources/static/index.html
Success! Compiled 1 module.
您可以在上找到代码


我怎样才能解决这个问题

一个Elm模块应该在文件的顶部有一个模块声明,即

module FrontendTest exposing (..)

应该可以解决这种情况下的问题。

文件FrontendTest.elm开头似乎没有
模块FrontendTest暴露(..)
行是的,缺少什么!谢谢也许加上它作为答案,我会接受:)