小编MrH*_*Hen的帖子

如何使用sinon存根新的Date()?

我想验证各种日期字段是否已正确更新,但我不想乱用预测何时new Date()被调用.如何删除Date构造函数?

import sinon = require('sinon');
import should = require('should');

describe('tests', () => {
  var sandbox;
  var now = new Date();

  beforeEach(() => {
    sandbox = sinon.sandbox.create();
  });

  afterEach(() => {
    sandbox.restore();
  });

  var now = new Date();

  it('sets create_date', done => {
    sandbox.stub(Date).returns(now); // does not work

    Widget.create((err, widget) => {
      should.not.exist(err);
      should.exist(widget);
      widget.create_date.should.eql(now);

      done();
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

如果它是相关的,这些测试在节点应用程序中运行,我们使用TypeScript.

javascript testing stub sinon

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

我可以自动将换行添加到AWS Firehose记录吗?

我正在尝试使用以下设置配置Kinesis Analytics应用程序:

  • 输入流是Kinesis Firehose,它采用字符串化的JSON值
  • SQL是一个简单的直通(以后需要更复杂但是为了测试,它只是通过发送数据)
  • 输出流是第二个Kinesis Firehose,它将记录传送到S3存储桶

接下来,我将使用Hive + JSONSERDE导入S3存储桶的内容,希望每个JSON记录都在自己的生产线上.Firehose输出只会附加所有打破JSONSERDE的JSON记录.

可以将AWS Lambda数据格式化程序附加到输出流,但这看起来很昂贵.我想要的是使用换行符分割每条记录.

如果我没有使用Google Analytics应用程序,我会将换行符附加到每个Firehose记录中.在应用程序的SQL中没有办法做到这一点似乎很奇怪:

CREATE OR REPLACE STREAM "STREAM_OUT" (
  a VARCHAR(4),
  b VARCHAR(4),
  c VARCHAR(4)
);
CREATE OR REPLACE PUMP "STREAM_PUMP" AS
  INSERT INTO "STREAM_OUT"
    SELECT STREAM
      "a",
      "b",
      "c"
    FROM "SOURCE_SQL_STREAM_001";
Run Code Online (Sandbox Code Playgroud)

是添加Lambda数据格式化程序的最佳答案吗?我真的很想避免这种情况.

amazon-kinesis amazon-kinesis-firehose

16
推荐指数
2
解决办法
4812
查看次数

CG_INLINE做什么?

我关注着的东西,如定义CGPoint关于如何创建自己的功能提示,但我不知道的目的CG_INLINE.幕后发生了什么?

CG_INLINE CGPoint
CGPointMake(CGFloat x, CGFloat y)
{
  CGPoint p; p.x = x; p.y = y; return p;
}

CG_INLINE CGSize
CGSizeMake(CGFloat width, CGFloat height)
{
  CGSize size; size.width = width; size.height = height; return size;
}
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c ios

15
推荐指数
3
解决办法
3346
查看次数

可以在运行时添加.strings资源文件吗?

我知道在Mac应用程序中,可以将.strings文件添加到项目文件夹以添加本地化.

是否有任何方法可以将其他本地化添加到应用程序(iOS或Mac OS),而无需在编译时从资源包中加载它们.比如说,下载一个额外的本地化并将其存储在iOS上的/ Documents中?

macos cocoa localization objective-c ios

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

如何确定哪个UIControlEvents类型导致UIEvent?

我想要做的是设置一堆UIControl对象通过相同的处理程序发送所有事件.该处理程序需要根据UIControlEvents触发的类型确定适当的操作.

- (void)handleEventFromControl:(id)sender withEvent:(UIEvent *)event {
    UIControl *control = sender;
    NSIndexPath *indexPath = [controlIndexPaths objectForKey:control];
    UIControlEvents controlEventType = event.type; //PROBLEM HERE

    BOOL fire = NO;
    NSNumber *eventCheck = [registeredEventsByToolkitIndex objectAtIndex:indexPath.toolkit];
    fire = ([eventCheck integerValue] & controlEventType);

    if(!fire) {
        eventCheck = [registeredEventsByControlIndex objectAtIndex:indexPath.control];
        fire = ([eventCheck integerValue] & controlEventType);
    }

    if(!fire) {
        eventCheck = [registeredEventsByIndexPath objectForKey:indexPath];
        fire = ([eventCheck integerValue] & controlEventType);
    }

    if(fire) {
        [self.delegate toolkit:self indexPath:indexPath firedEvent:event];
    }
}
Run Code Online (Sandbox Code Playgroud)

尽我所知,event.type这样做不起作用.我想避免使用子类,UIControl因为对于我想要做的事情来说,这是一种严重的过度杀伤.这里剩下的活动部件并不那么重要; 我想要的是在以下设置中使用 …

events controls objective-c ios

10
推荐指数
1
解决办法
4710
查看次数

抑制行特定的XCode编译器警告

Ben Gottlieb提出的问题类似,我有一些不赞成的电话让我烦恼.有没有办法按线抑制警告?例如:

 if([[UIApplication sharedApplication]
  respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) {

  [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
 } else {
  [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; //causes deprecation warning
 }
Run Code Online (Sandbox Code Playgroud)

我所关心的只是那条线.我不想关闭所有弃用警告.我也不愿意做一些像文件一样抑制特定警告的事情.

在其他一些情况下,即使编译器生成警告,我也希望将特定行标记为正常.我本质上想让我的团队知道问题已经处理完毕,并且一遍又一遍地停止对同一行进行窃听.

iphone xcode objective-c compiler-warnings

8
推荐指数
1
解决办法
4863
查看次数

UIImage imageNamed未正确自动释放

出于某种原因,以下代码中的保留/释放行为让我感到困惑.

selectedImage = [UIImage imageNamed:@"icon_72.png"];
[selectedImage release];
Run Code Online (Sandbox Code Playgroud)

应该打破但不会.为什么?我认为imageNamed自动释放本身意味着这里的释放是多余的,并且应该在自动释放发生时中断.

以下是.h和.m文件中与selectedImage相关的代码段:

@property (nonatomic, readonly) UIImage *selectedImage;
@synthesize delegate, selectedImage, spacerBottom, currentIndex;
Run Code Online (Sandbox Code Playgroud)

其他说明,这确实打破了:

selectedImage = [UIImage imageNamed:@"icon_72.png"];
[selectedImage release];
[selectedImage release];
//objc[55541]: FREED(id): message release sent to freed object=0x59245b0
//Program received signal:  “EXC_BAD_INSTRUCTION”.
Run Code Online (Sandbox Code Playgroud)

由于这样的:

selectedImage = [UIImage imageNamed:@"icon_72.png"];
[selectedImage release];
[selectedImage autorelease];
//objc[55403]: FREED(id): message autorelease sent to freed object=0x59b54c0
//Program received signal:  “EXC_BAD_INSTRUCTION”.
Run Code Online (Sandbox Code Playgroud)

所以了以下内容:

selectedImage = [UIImage imageNamed:@"icon_72.png"];
[selectedImage autorelease]; …
Run Code Online (Sandbox Code Playgroud)

memory iphone objective-c uiimage

3
推荐指数
2
解决办法
4722
查看次数

检查运行时是否存在UI_USER_INTERFACE_IDIOM

我正在开发一款能够在iPad和iPhone上运行的通用应用程序.苹果iPad文档说用来UI_USER_INTERFACE_IDIOM()检查我是在iPad或iPhone上运行,但我们的iPhone是3.1.2并且没有UI_USER_INTERFACE_IDIOM()定义.因此,此代码中断:

//iPhone should not be flipped upside down. iPad can have any
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  return YES; //are we on an iPad?
 } else {
  return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
 }
}
Run Code Online (Sandbox Code Playgroud)

在Apple的SDK兼容性指南中,他们建议执行以下操作以检查函数是否存在:

//iPhone should not be flipped upside down. iPad can have any
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 if(UI_USER_INTERFACE_IDIOM() != NULL &&
  UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  return YES; //are we on an iPad?
 } else {
  return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
 }
} …
Run Code Online (Sandbox Code Playgroud)

iphone function-pointers objective-c backwards-compatibility ipad

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