小编She*_*Hui的帖子

如何用Jasmine窥探静态类方法

我有一个静态方法的类,我想在Jasmine中测试.我知道静态方法不能在类的实例上调用.所以除了找不到spyOn的方法之外,我的测试没有通过,但是如何用Jasmine在类中测试静态方法呢?

谢谢!

class Foo {
    static foobar (a, b) {
      return a * b
    }
}
Run Code Online (Sandbox Code Playgroud)

茉莉花测试

it ('should test a static method', () => {
    let foo = new Foo()
    spyOn(foo, 'foobar')
    foo.foobar(2,3)
    expect(foo.foobar).toBe(6)
})
Run Code Online (Sandbox Code Playgroud)

javascript static class spy jasmine

11
推荐指数
1
解决办法
1万
查看次数

在 Yarn Workspace 的不同包中使用不同版本的依赖项

我对使用 Yarn Workspaces 和设置 Monorepo 还比较陌生,所以如果有人回答了这个问题,请原谅我。我不相信我已经找到了关于使用 Yarn Workspaces 设置 Monorepo 是否可行的明确答案。

我想知道是否可以在不同的包中使用两个不同版本的依赖项(在我的情况下是 TypeScript)以及如何做到这一点。

我的目标是在包 A 中锁定一个 TypeScript (3.4.5) 版本,并将根package.json版本 (3.5.0) 的 TypeScript 用于此 monorepo 中的所有其他包。

这是文件夹结构。理想情况下,PackageA 将使用 3.4.5,PackageB/PackageC 将使用根中定义的任何版本package.json

|-- packages
    |-- packageA
    |-- packageB 
    |-- packageC
|-- package.json
Run Code Online (Sandbox Code Playgroud)

这是我迄今为止尝试过的:

我尝试nohoist在 webpack 配置中添加我的工作区选项,但我不相信包 A 使用的是 TypeScript 3.4.5,因为我没有得到预期的结果。当我将根package.jsonTypeScript 版本要求更改为 3.4.5 时,即当我得到正确的结果时,如果我可以继续为所有其他包使用最新的 TS 而为包 A 保留较低版本,那将是最好的情况。

我还尝试package.json在 PackageA 文件夹中添加一个,它定义"typescript": "3.4.5"devDependency. Yarn 在 PackageA 文件夹中安装了正确的版本,但它似乎没有使用它。

我也很确定 Yarnresolutions不是这种情况的正确工具,因为我的包在我的package.json …

typescript monorepo webpack-4 yarn-workspaces

6
推荐指数
1
解决办法
3201
查看次数