小编Ada*_*dam的帖子

你如何开玩笑地模拟模块的某些部分?

我已经建立了一个日历moment.js,我现在正在进行单元测试。

我解决的第一个问题是测试运行时日期将如何变化,因此我已经能够使用此指南锁定时刻。

目前,我陷入了一个错误:

“类型错误:无法读取未定义的属性‘weekdaysShort’”

我的代码有一行: const dateHeaders = moment.weekdaysShort();

通过实现 mocked moment().format(),我基本上失去了库的其余部分。

我的直接问题是如何设置 jest 让我返回您从中获得的数组moment.weekdaysShort();

我更大的问题是我是否走错了路,是否应该想出另一种策略。

我尝试过但结果不成功的事情

  1. weekdayShort函数中手动添加:
const mockMoment = function() {
  return {format: '2016–12–09T12:34:56+00:00'}
};

mockMoment['weekdaysShort'] = () => ['Sun', 'Mon', 'Tues']; // etc etc etc

jest.mock('moment', () => mockMoment);
Run Code Online (Sandbox Code Playgroud)
  1. __mocks__文件夹中组装手动模拟。我没有走得太远,因为我开始觉得我必须将整个 Moment.js 库复制/粘贴到模拟中。虽然弄清楚他们如何做他们所做的事情会很酷,但这是另一天的项目。
  2. jest.spyOn - 不起作用,因为我没有监视模块。

在这一点上,我正在考虑放弃Moment通过 props 传入的数组的函数。虽然我相信这会让我克服这个问题,但感觉之后我会很快遇到另一个障碍。

在此先感谢您的帮助。

javascript unit-testing momentjs reactjs jestjs

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

在NSDictionary中存储枚举值

我有一堆JSON对象从服务器返回,我试图在我的目标C中将它们标准化一点.

我有这个枚举:

//VP_STATUS
typedef enum {
    VP_STATUS_NA,
    VP_STATUS_STEXP,
    ...
    VP_STATUS_COUNT
} VP_STATUS;
Run Code Online (Sandbox Code Playgroud)

我有一个函数将JSON对象(这是一个NSMutableDictionary)中的字符串映射到此枚举,然后我尝试在NSMUtableDictionary上设置一个键"status",如下所示:

VP_STATUS status = [myStringToEnumMappingFunction:[p objectForKey:@"status_label"]];
[p setValue:status forKey:@"status"];
Run Code Online (Sandbox Code Playgroud)

但是,在setValue:forKey行上我收到此错误:

"Implicit conversion of VP_STATUS to id is disallowed with ARC"
Run Code Online (Sandbox Code Playgroud)

我首先必须将状态转换为其他内容吗?如果是这样,那么那种使用定义为VP_STATUS的消息的目的就失败了,不是吗?

我对Objective-c相当新,所以我可能会对我所知道的完全错误,并且愿意接受建议.

objective-c

4
推荐指数
1
解决办法
4314
查看次数

npm 不能在以前发布的版本上发布

npm让我感到悲伤,我不知道为什么。试图发布我的包的新版本。

npm view {{package}} versions

[ '0.3.0',
  '0.3.1',
  '0.4.0',
  '0.4.2',
  '0.5.0',
  '0.6.0',
  '0.6.1',
  '0.7.0',
  '0.7.1',
  '0.8.0',
  '0.8.1',
  '0.8.2',
  '0.8.3',
  '0.8.4',
  '0.8.5' ]
Run Code Online (Sandbox Code Playgroud)

当我跑步时,npm publish我得到了这个:

400 Bad Request - PUT https://registry.npmjs.org/{{package}} - Cannot publish over previously published version "1.0.0".
Run Code Online (Sandbox Code Playgroud)

这是我当前的 package.json:

...
"version": "1.0.0",
...
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?

编辑:

此外,即使当我尝试修补版本并发布 1.0.1 或 1.0.2 时,我也会收到相同的消息......

npm npm-publish

4
推荐指数
2
解决办法
3358
查看次数

动画后的角度重置过渡状态

所以我有这个:

  animations: [
    trigger('shake', [transition('* => *', /* some animation */)])
  ]
Run Code Online (Sandbox Code Playgroud)

<app-button
  [@shake]="shake"
>
</app-button>
Run Code Online (Sandbox Code Playgroud)

当我单击它时,我设置shake为 true。当我再次单击它时,我希望按钮再次摇晃,但它不会,因为摇晃已经是真的。

我该如何解决这个问题?

Angular 新手,谢谢!

angular angular-animations

2
推荐指数
1
解决办法
1062
查看次数

生成包含在列表中命名的 shell 变量的 JSON 映射

我的 shell-fu 处于初级以下水平。我有一个文件,其中包含一些恰好是环境变量名称的行。

例如

ENV_VAR_A
ENV_VAR_B
...
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用此文件生成一个 JSON 字符串,其中包含使用 jq 的命名变量的名称和当前值,如下所示:

jq -n --arg arg1 "$ENV_VAR_A" --arg arg2 "$ENV_VAR_B" '{ENV_VAR_A:$arg1,ENV_VAR_B:$arg2}'

# if ENV_VAR_A=one and ENV_VAR_B=two then the preceding command would output 
# {"ENV_VAR_A":"one","ENV_VAR_B":"two"}
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过 shell 脚本创建 jq 命令,但我不知道我在做什么:(

bash shell environment-variables jq

2
推荐指数
1
解决办法
512
查看次数