我正在使用JUnit 4.12和Jackson
@Test
public void testFailToGetDataAsString() {
Receipt receipt = new Receipt(null);
assertNull(receipt.getDataAsString());
}
我正在测试的方法如下(this.data只是一个空图):
public String getDataAsString() {
try {
return new ObjectMapper().writeValueAsString(this.data);
} catch (Exception e) {
return null;
}
}
最后,我运行测试并检查" null"不是"< null>"。
答案 0 :(得分:4)
addText: function(opts) {
opts = opts || {};
var options = _.extend({}, MEME.TEXT.defaults, opts);
var text = options.text;
delete options.text;
var txt = new fabric.Text(text, options);
if(document.getElementById('text-shadow').checked) {
ctx = canvas.getContext('2d');
ctx.shadowColor = "black";
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 2;
ctx.shadowBlur = 1;
}
if(document.getElementById('text-glow').checked) {
ctx = canvas.getContext('2d');
ctx.shadowColor = "yellow";
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 5;
ctx.shadowBlur = 10;
}
canvas.add(txt);
txt.center();
MEME.objects.text.push(txt);
MEME.makeSelected();
},
不返回null,因为getDataAsString()
不会抛出异常,而是返回一个字符串return new ObjectMapper().writeValueAsString(this.data);
,当然不等于"< null >"
。如果null
返回此自定义null类型,则应该返回null,而不是仅在捕获异常时返回null。
答案 1 :(得分:1)
我终于将方法代码更改为:
public String getDataAsString() {
try {
if (this.data != null) {
return new ObjectMapper().writeValueAsString(this.data);
}
} catch (Exception e) {
}
return null;
}
我真的不知道为什么会这样,而前一个不行。