小编Edu*_*sta的帖子

将原语传递给OCMock的存根

我正在学习如何使用OCMock来测试我的iPhone项目,我有这样的场景:带有getHeightAtX:andY:方法的HeightMap类和使用的Render类HeightMap.我正在尝试使用一些HeightMap模拟单元测试渲染.这有效:

id mock = [OCMockObject mockForClass:[Chunk class]];
int h = 0;
[[[mock stub] andReturnValue:OCMOCK_VALUE(h)] getHeightAtX:0 andY:0];
Run Code Online (Sandbox Code Playgroud)

当然,仅适用于x=0y=0.我想测试使用"平面"高度图.这意味着我需要做这样的事情:

id chunk = [OCMockObject mockForClass:[Chunk class]];
int h = 0;
[[[chunk stub] andReturnValue:OCMOCK_VALUE(h)] getHeightAtX:[OCMArg any] andY:[OCMArg any]];
Run Code Online (Sandbox Code Playgroud)

但这引发了两个编译警告:

警告:'getHeightAtX:andY:'从没有强制转换的指针传递整数的参数1

和运行时错误:

调用了意外的方法: 'getHeightAtX:0 andY:0 stubbed: getHeightAtX:15545040 andY:15545024'

我错过了什么?我发现无法传递anyValue给这个模拟器.

primitive xcode ocmock

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

为什么((self = [super init]])工作,但(!(self = [super init]))不工作?

出于审美原因,我决定改变这个:

if ((self = [super init])) {
    // init self
}
return self;
Run Code Online (Sandbox Code Playgroud)

进入:

if (!(self = [super init])) return nil;
// init self
return self;
Run Code Online (Sandbox Code Playgroud)

从理论上讲,他们做同样的事情.第一个是经典的方式,简单的工作.调试第二个,我发现它几乎工作."if"是正确的,init代码也是,但是,在返回"self"之后,调试器返回到"if"并返回nil!

我用第二个类创建的所有类我都使用"正确"的方式,因为它们以nil启动,但我真的想知道为什么它会像那样!我担心这可能是其他错误的结果!

xcode objective-c ios

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

在iPhone中,三元操作比"if/else"更好

我的程序中有这个块:

if (x > 0) {
    a = 1;
    b = 4;
} else {
    a = 2;
    b = 3;
}
Run Code Online (Sandbox Code Playgroud)

这可以用这样的三元运算编写:

a = (x > 0) ? 1 : 2;
b = (x > 0) ? 4 : 3;
Run Code Online (Sandbox Code Playgroud)

结果是等价的,但它是我应用程序真正关键部分的一部分,每秒运行数千次.我想挤一些微秒,因为这种方法会增长一点.

我的问题:在ARM级别,哪一个更快?我相信第一个创建分支指令.但三元运作怎么样?它也成为iPhone上的一个分支吗?或iPhone的ARM有一个邪恶的操作码来完成这项工作?

顺便说一句,我也看到了这样一种邪恶的技巧:

a = (x > 0) * 1 + (x <= 0) * 2;
Run Code Online (Sandbox Code Playgroud)

这真的更快吗?

iphone arm ios

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

如何对自定义Wicket组件进行单元测试

鉴于这个非常简单的Wicket组件:

public class ProductImage extends WebComponent {

    public ProductImage(String id, Product p) {
        super(id, new Model(p));
        add(new AttributeModifier("src", true, new Model(p.getImage())));
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用WicketTester进行单元测试?我需要一个页面吗?

java components unit-testing wicket wicket-tester

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

使用Wicket生成Google Analytics电子商务跟踪

我正在开发一个使用Wicket来呈现页面的电子商务.我有一个主页布局的"BasePage",在我的"感谢您购买"页面中,我想添加Google Analytics电子商务跟踪代码.作为参考,JS代码如下:

<script type="text/javascript>
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-12345678-9']);
  _gaq.push(['_addTrans', '123', '', '12.56', '', '5.00']);
  _gaq.push(['_addItem', '123', 'sku-1', 'Product 1', 'Category X', '12.56', '1']);
  _gaq.push(['_addItem', '123', 'sku-2', 'Product 2', 'Category Y', '13.45', '1']);
  _gaq.push(['_trackTrans']);
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>
Run Code Online (Sandbox Code Playgroud)

购物车和结账的HTML代码很简单,但是如何使用Wicket动态生成这个JS?

wicket google-analytics

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