我在我的JUnit中测试Restful端点并在列表中获得如下所示的异常,该异常作为save方法中的参数出现,
**"Argument(s) are different! Wanted:"**
save(
"121",
[com.domain.PP@6809cf9d,
com.domain.PP@5925d603]
);
Actual invocation has different arguments:
save(
"121",
[com.domain.PP@5b6e23fd,
com.domain.PP@1791fe40]
);
Run Code Online (Sandbox Code Playgroud)
当我调试代码时,代码在下面的验证行中断开并引发了上述异常.看起来save方法中"testpPList"内的参数是不同的.我不知道它是如何变得不同,因为我正确地在我的JUNit中构造它们然后调用RestFul URL.
请求您的宝贵意见.谢谢.
码:
@Test
public void testSelected() throws Exception {
mockMvc.perform(put("/endpointURL")
.contentType(TestUtil.APPLICATION_JSON_UTF8)
.content(TestUtil.convertObjectToJsonBytes(testObject)))
.andExpect(status().isOk());
verify(programServiceMock, times(1)).save(id, testpPList);
verifyNoMoreInteractions(programServiceMock);
}
Run Code Online (Sandbox Code Playgroud)
控制器方法:
@RequestMapping(value = "/endpointURL", method = RequestMethod.PUT)
public @ResponseBody void uPP(@PathVariable String id, @RequestBody List<PPView> pPViews) {
// Code to construct the list which is passed into the save method below
save(id, pPList);
}
Run Code Online (Sandbox Code Playgroud) 我对模型 - 视图 - 控制器设计模式有疑问.我理解该模型包含数据.我也了解Controller(View Controllers)实现app的逻辑.例如,如果UIPicker轮选择第4行,则视图控制器可以向模型询问存储在模型阵列中的第4个对象.我很难理解"视图"是否合适.我认为该笔尖/故事板文件将被归类为"视图".但是,每个视图都需要连接一个View Controller,将所有插座连接到视图.我怎么想保持View和View Controller分开?我应该将所有插座连接到"View Class",然后在我的View Controller中引用我的"View"类来实现这些插座的逻辑吗?也许我只需要一个View和View Controller处理不同任务的例子.因为否则额外的"视图"类似乎没有意义.MVC的视图是指View类吗?我希望如何或为什么要将此View类与View Controller类分开?
model-view-controller design-patterns objective-c uiviewcontroller ios
我正在创建一个包含我正在写的名为Person的类的应用程序.Person的一个字段是'aliases',它是一个ArrayList<String>.最终,别名将根据以下逻辑显示给用户:如果Person具有别名,则应显示为[Finch, Wren, Admin, etc...],否则UNKNOWN应显示.到目前为止,我已经尝试过三种方式之一:
Person包含getAliases()简单地返回ArrayList副本的方法.调用者检查空数组以实现所需的行为.
Person包含aliasesToString()可以调用以生成所需字符串的方法.
ArrayList<String>别名是一种实现,而不是使用DefaultableArrayList<T>.此类扩展了ArrayList并保存了类型为T的默认值.该toString()方法被覆盖以生成所需的字符串.应用程序调用some_person.getAliases().toString()以产生所需的行为.
以下是我对选项3的实现:
public class DefaultableArrayList<T> extends ArrayList<T> {
private static final long serialVersionUID = -6735356930885363889L; // Auto-generated
private final T defaultElement;
public DefaultableArrayList(T defaultElement) {
super();
this.defaultElement = defaultElement;
}
public DefaultableArrayList(Collection<? extends T> c, T defaultElement) {
super(c);
this.defaultElement = defaultElement;
}
public DefaultableArrayList(int initialCapacity, T defaultElement) {
super(initialCapacity);
this.defaultElement = defaultElement;
}
public T getDefaultElement() …Run Code Online (Sandbox Code Playgroud) 我知道VIM可以用Ctrl+ 开始视觉块选择V,或者有时Ctrl+ V变成粘贴,我们仍然可以用Ctrl+ Q.但我认为这个组合键并不容易按下,我可以为此分配一个自定义键吗?例如,我想q在正常模式下使用以开始视觉选择(我不使用那么多的宏录制):
map q ??? < - 我应该在这写什么?
我有时需要在SWT中动态生成颜色.以一个视图为例,该视图显示红色 - 绿色不同颜色的0-1之间的分数.可能存在具有不同颜色的其他类似视图:
class ScoreView {
private Canvas canvas;
private List<Item> items = new ArrayList<Item>();
public ScoreView(Composite parent) {
canvas = new Canvas(parent, SWT.NONE);
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent event) {
GC gc = event.gc;
int x = 0;
for(Item item:items) {
int shade = (int)(item.getScore() * 255.0);
Color color = new Color(Display.getCurrent(), shade, 255-shade, 0);
gc.setBackground(color);
gc.fillRectangle(x, 0, 50, 50);
x += 50;
}
}
});
}
public void setItems(List<Item> items) {
this.items = items;
canvas.redraw();
}
} …Run Code Online (Sandbox Code Playgroud) 我有类似的要求,如果连接到系统的设备的Android sdk版本高于2.1,则它应采用sdcard路径/sdcard,如果设备的版本高于4.1,则应采用sdcard路径/mnt/sdcard。
那么,如何找出通过命令行连接到系统的设备版本(无论是2.x版本的设备还是4.x版本的)?
我正在阅读wikipeida并发现Kruskal的Pseudocode如下:
KRUSKAL(G):
foreach v ? G.V:
MAKE_SET(v)
G.E = sort(G.E)
i = 0
while (i != |V|-1):
pick the next (u, v) edge from sorted list of edges G.E
if (FIND_SET(u) != FIND_SET(v)):
UNION(u, v)
i = i + 1
Run Code Online (Sandbox Code Playgroud)
我不确定是什么FIND_SET(),维基百科有以下描述:
如果该边连接两个不同的树,则将其添加到森林中,将两棵树组合成一棵树.
所以我想它会检查是否连接了两棵不同的树,但这究竟意味着什么呢?