小编Buz*_*zzy的帖子

如何使用Testacular(Karma)调试Jasmine规范运行?

我有一个关于Jasmine规范的小项目,我使用Testacular作为我的测试运行员.我不明白我如何调试应用程序代码或规范代码.当我尝试在Chrome开发工具中设置断点时,下次运行规范时不会触发该断点,因为它每次都会使用新的查询字符串加载文件.

到目前为止我发现的最好的事情是使用console.log()但我宁愿使用Chrome Dev Tools断点.

(我使用Visual Studio 2012进行开发.)

谢谢

javascript jasmine karma-runner

12
推荐指数
2
解决办法
2万
查看次数

如何告诉 json.Unmarshal 使用结构而不是接口

我想编写一个函数来接收几种类型的结构并从 JSON 中解组它们。为此,我有另一组带有预定义签名的函数,这些函数返回结构体实例,但由于每个函数返回不同类型的结构体,因此函数签名具有interface{}作为返回类型。

当我发送 json.Unmarshal 一个具体的结构时,它按我的预期工作,但是当我发送相同的结构时,interface{}它将它转换为地图。

这是描述问题的简化示例代码:

package main

import (
"encoding/json"
    "fmt"
)

type Foo struct {
    Bar string `json:"bar"`
}  

func getFoo() interface{} {
    return Foo{"bar"}
}

func main() {

    fooInterface := getFoo() 
    fooStruct := Foo{"bar"}
    fmt.Println(fooInterface) //{bar}
    fmt.Println(fooStruct)    //{bar}

    myJSON := `{"bar":"This is the new value of bar"}`
    jsonBytes := []byte(myJSON)

    err := json.Unmarshal(jsonBytes, &fooInterface )
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(fooInterface) //map[bar:This is the new value of bar] …
Run Code Online (Sandbox Code Playgroud)

json struct go unmarshalling

12
推荐指数
1
解决办法
6132
查看次数

有没有办法阻止 npm 在 node_modules 内创建工作区包的符号链接?

我们正在开发一个使用 npm 工作区的 monorepo。该项目中的一个目录很特殊,因为我们不想允许该目录中的包相互创建导入。我们目前使用 eslint 和“eslint-plugin-import”无限制路径规则来阻止此目录中的包从同级目录导入。

从某些版本的 npm 开始,它开始在 node_modules 中自动创建这些包的符号链接,从而使限制变得毫无用处。我不想阻止所有的node_modules,并且我无法为每个添加的包手动列出所有同级模块。

有没有办法告诉 npm 不要为 node_modules 中的工作区包创建这些符号链接?

npm eslint eslint-plugin-import

11
推荐指数
0
解决办法
382
查看次数

AssertCalled总是以testify库失败

我正在使用testify来测试我的代码,我想检查函数是否被调用.

我正在做以下事情:

type Foo struct {
    mock.Mock
}

func (m Foo) Bar() {

}

func TestFoo(t *testing.T) {
    m := Foo{}
    m.Bar()
    m.AssertCalled(t, "Bar")
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Error:      Should be true
Messages:   The "Bar" method should have been called with 0 argument(s), but was not.

mock.go:419: []
Run Code Online (Sandbox Code Playgroud)

我调用函数"Bar"并立即询问它是否被调用但返回false.我究竟做错了什么?测试函数是否通过testify调用的正确方法是什么?

go testify

5
推荐指数
1
解决办法
1670
查看次数

time.Since() 的奇怪行为

我正在运行 GO (1.9.2) 程序,并且我的代码类似于:

startTime := time.Now()
...
...
fmt.Printf("%v (1) %v \n", user.uid, int64(time.Since(startTime)))
fmt.Printf("%v (F) %v \n", user.uid, int64(time.Since(startTime)))
Run Code Online (Sandbox Code Playgroud)

(两个fmt语句在连续行上)

我预计打印输出的时间相似,但以下是打印的一些结果:

921 (1)    2000100
921 (F) 3040173800
Run Code Online (Sandbox Code Playgroud)

(3秒)

360 (1)    2000100
360 (F) 1063060800
Run Code Online (Sandbox Code Playgroud)

(1秒)

447 (1)    4000200
447 (F) 2564146700
Run Code Online (Sandbox Code Playgroud)

(2.5 秒)

两次打印输出之间的时间差始终很大。

这种现象的解释是什么?

额外信息:根据 pprof 的说法,打印时大约有 15000 个 goroutine 正在运行,但大多数都在等待套接字上的传入数据。

我运行了代码,GODEBUG=gctrace=1但没有太多 GC 打印输出,几乎没有我的代码的打印输出数量那么多。

编辑: 似乎按照@Verran的建议将 time.Since() 的结果存储到变量中解决了这个问题。

更改为fmt没有log帮助,但打印不再同步。

fmt看来“问题”是在高负载环境中处理的方式。我希望有人能够阐明这里发生的事情。

go pprof

5
推荐指数
1
解决办法
393
查看次数

对于一个巨大的仓库来说 git Push 非常慢

我遇到了与 - git Push 对于分支来说非常慢的问题 ,但那里的答案不适合我的情况。

我正在针对一个拥有非常大的存储库的企业 GitHub 进行工作。我的流程如下:

1)从master拉取

2)创建新分支

3)承诺

4) 推送分支以创建拉取请求。

当将分支推送到 (4) 时,它想要写入超过 1,000,000 个对象,当我所做的提交仅更改 1 行时,这大约需要 3GB。

如果我转到 GitHub UI 并从 UI 创建一个与 (2) 中名称相同的分支,然后推送到该分支,则推送时间不到一秒。不用说,master 和我的分支之间的更改非常小(没有添加或删除大文件)。

我该怎么做才能让 Git 只推送相关数据而不是整个存储库?

Windows 版本 2.17.0 上的 Git

git github

5
推荐指数
2
解决办法
9209
查看次数

Node.js中的异步收集方法

是否有一些类似于下划线的框架允许我在集合上运行异步方法.

像_.each(collection,itemCallback,doneCallback)之类的东西.

例如:

_.each(items, function(item, token){
    item.someProperty = null;
  }, function(err){
     console.log("The loop is done");
  });
Run Code Online (Sandbox Code Playgroud)

编辑: async.js实际上并没有解决问题.例如以下代码

<script type="text/javascript" src="async.js"></script>
<script type="text/javascript">

var arr = ["a","b","c"];

async.forEach(arr, function(item, met){
    console.log(item);
},
function(err){
});
console.log("Done");

</script>
Run Code Online (Sandbox Code Playgroud)

打印abc完成

虽然我想要它打印完成abc

我可以使用下划线deffer但也许还有一些其他的lib可以在没有包装器的情况下完成它.

asynchronous node.js underscore.js

3
推荐指数
1
解决办法
8793
查看次数

有没有办法将Go可执行文件分成几个文件?

我正在发送几个用Go编译的可执行文件.每个可执行文件本身不包含大量代码,但每个可执行文件都使用包含日志记录,配置管理,通信层等的公共库.

这导致每个可执行文件在15-20mb之间,有时只有1000行代码.

Go中是否有一种方法(目前可用或计划用于将来的版本),允许将应用程序分成几个文件(即Windows中的dll,.so Linux/Mac)?

我知道我可以编译库然后将其用作外部二进制文件但是我不会从类型系统和Go编译器优化中获益.我错了,有办法吗?

go

-3
推荐指数
1
解决办法
57
查看次数