首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用本地本机目录测试elm

用本地本机目录测试elm
EN

Stack Overflow用户
提问于 2016-06-20 09:47:37
回答 1查看 292关注 0票数 1

在开发一些使用本机js代码的库时,我们如何组织测试目录?

我试图解决这个问题,但是在运行test/test.sh时在运行时遇到了这个错误:

代码语言:javascript
复制
Elm.Native.Mylib = {};
   ^

TypeError: Cannot read property 'Native' of undefined

git存储库

我的目录是这样构造的:

代码语言:javascript
复制
Mylib:
   - src :
      - Mylib.elm
      - Native :
         - MyLib.js

   - tests :
      - Test.elm
      - Test.sh
      - elm-package.json

tests/elm-package.json包含:

代码语言:javascript
复制
{
    "version": "1.0.0",
    "summary": "helpful summary of your project, less than 80 characters",
    "repository": "https://github.com/user/project.git",
    "license": "BSD3",
    "source-directories": [
      "."
      ,"../src"
    ],
  "exposed-modules": [],
  "native-modules": true,
    "dependencies": {
        "elm-community/elm-test": "1.1.0 <= v < 2.0.0",
        "elm-lang/core": "4.0.1 <= v < 5.0.0"
    },
    "elm-version": "0.17.0 <= v < 0.18.0"
}

tests/Test.elm是:

代码语言:javascript
复制
module Main exposing (..)

import Basics exposing (..)
import ElmTest exposing (..)
import Mylib exposing (..)

tests : Test
tests =
    suite "elm-Mylib Library Tests"
  [ ]

main =
    runSuite tests

tests/test.sh

代码语言:javascript
复制
#!/bin/sh

elm-package install -y

elm-make --yes --output test.js Test.elm
node test.js

src/Mylib.elm

代码语言:javascript
复制
module Mylib exposing (..)

import Native.Mylib exposing (..)
import Task exposing (Task)
import Time exposing (Time)

print : a -> Task x ()
print value =
  Native.Mylib.log (toString value)

getCurrentTime : Task x Time
getCurrentTime =
  Native.Mylib.getCurrentTime

src/Native/Mylib.js

代码语言:javascript
复制
Elm.Native.Mylib = {};
Elm.Native.Mylib.make = function(localRuntime) {

    localRuntime.Native = localRuntime.Native || {};
    localRuntime.Native.Mylib = localRuntime.Native.Mylib || {};
    if (localRuntime.Native.Mylib.values)
    {
        return localRuntime.Native.Mylib.values;
    }

    var Task = Elm.Native.Task.make(localRuntime);
    var Utils = Elm.Native.Utils.make(localRuntime);


    function log(string)
    {
        return Task.asyncFunction(function(callback) {
            console.log(string);
            return callback(Task.succeed(Utils.Tuple0));
        });
    }


    var getCurrentTime = Task.asyncFunction(function(callback) {
        return callback(Task.succeed(Date.now()));
    });


    return localRuntime.Native.Mylib.values = {
        log: log,
        getCurrentTime: getCurrentTime
    };
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 18:53:44

试试这个:

代码语言:javascript
复制
var _user$project$Native_MyLib = function() {
return {
    exported: function(arg) { return "One" },
    exported2: F2(function(arg) { return "Two" }),
    exported3: F3(function(arg) { return "Three" }),
}
}();

它比Elm 0.17更适用于磨粒机。

购买时也应使用完全合格进口:

代码语言:javascript
复制
import Natve.MyLib

exported : String -> String
    Native.MyLib.exported

exported2 : String -> String -> String
    Native.MyLib.exported2

exported3 : String -> String -> String -> String
    Native.MyLib.exported3

用户和项目值来自您/本地elm-package.json

代码语言:javascript
复制
 "repository": "https://github.com/user/project.git",
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37919318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档