我正在努力学习如何编写测试.我也在学习Java,有人告诉我应该学习/使用/练习jMock,我在网上发现了一些有助于某些扩展的文章:
http://www.theserverside.com/news/1365050/Using-JMock-in-Test-Driven-Development
http://jeantessier.com/SoftwareEngineering/Mocking.html#jMock
我发现的大多数文章都是关于测试驱动的开发,首先编写测试然后编写代码以使测试通过.我现在不是在寻找,我正在尝试使用jMock为现有代码编写测试.
该官方文档是模糊,我不说,只是太辛苦了.有没有人有更好的方法来学习这个.好书/链接/教程对我很有帮助.谢谢
编辑 - 更具体的问题:
http://jeantessier.com/SoftwareEngineering/Mocking.html#jMock - 来自这篇文章
试过这个来模拟这个简单的类:
import java.util.Map;
public class Cache {
private Map<Integer, String> underlyingStorage;
public Cache(Map<Integer, String> underlyingStorage) {
this.underlyingStorage = underlyingStorage;
}
public String get(int key) {
return underlyingStorage.get(key);
}
public void add(int key, String value) {
underlyingStorage.put(key, value);
}
public void remove(int key) {
underlyingStorage.remove(key);
}
public int size() {
return underlyingStorage.size();
}
public void clear() {
underlyingStorage.clear();
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我尝试创建测试/模拟的方法:
public class CacheTest extends TestCase {
private …Run Code Online (Sandbox Code Playgroud) 我正在尝试为这个类编写一个名为Receiver的测试:
public void get(People person) {
if(null != person) {
LOG.info("Person with ID " + person.getId() + " received");
processor.process(person);
}else{
LOG.info("Person not received abort!");
}
}
Run Code Online (Sandbox Code Playgroud)
这是测试:
@Test
public void testReceivePerson(){
context.checking(new Expectations() {{
receiver.get(person);
atLeast(1).of(person).getId();
will(returnValue(String.class));
}});
}
Run Code Online (Sandbox Code Playgroud)
注意:receiver是Receiver类的实例(真的不是mock),processor是处理person(People类的模拟对象)的Processor类(真实不是mock)的实例.GetId是一个String not int方法,不是错误的.
测试失败:person.getId()的意外调用
我正在使用jMock任何帮助将不胜感激.据我所知,当我称这种get方法正确执行时,我需要嘲笑person.getId(),而且我已经在圈子里徘徊了一段时间,现在任何帮助都会受到赞赏.
<abbr>我的HTML中有一个带有"timeago"类的标签.当我在页面加载时设置它的值,然后调用jQuery("abbr.timeago").timeago();文档就绪功能它的工作原理.
我的问题是,如果我从某些javascript函数动态更改abbr.timeago标题怎么办,如何让timeago插件在更新的abrr.timeago元素上做出魔力呢?
我应该打电话给哪个功能?我应该jQuery("abbr.timeago").timeago();从文件准备功能中删除还是离开?谢谢
编辑问题:
@squiddy示例工作,只更新一次时间,它只是保持不变.例如,如果我将timeago放到当前时间......那么它只是表示它不会改变?
BOUNTY UPDATE:
请忽略以前的问题.在我的网站上有一个链接,点击它的getJSON函数被调用,它从服务器获取一些信息到表中.
每行代表来自服务器的反馈.这是我的getJSON伪代码:
$.getJSON("feedback/" + feedbackId, function(data) {
var column ... declared variable in which column selector
.... some logic that populates table(irrelevant)
//Store last checked time in title
column.attr("title", iso8601(new Date()));
//invoke timeago on this title
column.html(jQuery.timeago(iso8601(new Date())));
....iso8601 is date format function
});
Run Code Online (Sandbox Code Playgroud)
因此,我从服务器获得的每个反馈都会调用此getJSON(n次).当json完成时,表中的相应列将填充上次更新的时间.
但似乎timeago没有读取更改的标题值,它无法识别更新的DOM.我为服务器的每个反馈设置了一个console.log(element.attr("title")),用于调试目的,看看我是否将title属性设置为当前时间,确实确实如此,但是timeago获取了最初加载的标题值.
我该怎么办我也试过这个版本:
$.getJSON("feedback/" + feedbackId, function(data) {
var column ... declared variable in which column selector
.... some logic that populates table(irrelevant) …Run Code Online (Sandbox Code Playgroud) 尝试用sed替换字符串时发生了一些奇怪的事情.这有效:
find /home/loni/config -type f -exec sed -i 's/some_pattern/replacement/g' {} \;
Run Code Online (Sandbox Code Playgroud)
所以当我手动输入字符串时它可以工作.但在下面的情况下,不会发生更换:
find /home/loni/config -type f -exec sed -i 's/${PATTERN}/${REPLACEMENT}/g' {} \;
Run Code Online (Sandbox Code Playgroud)
当我回显这两个变量PATTERN和REPLACEMENT时,它们具有正确的值.
我正在尝试用我的config目录中的所有文件中的替换字符串替换所有模式字符串的出现.
我的数据库中有true/false值.我想用jqgrid中的复选框更新它们.一旦该值设置为true,它将保持为真且不应更改.请看一下我的专栏模型:
{
name : 'available',
width : 12,
resizable: true,
editable: true,
align: 'center',
edittype:'checkbox',
formatter: "checkbox", formatoptions: {disabled : false},
classes:'check',
editrules:{required:false}, editoptions:{size:39,value:"True:False"}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试在选中复选框时捕获事件,目前它们都未经检查,到目前为止我已经尝试过:
jq(".check input").each(function(){
jq(this).click(function(){
aler("works");
});
});
jq("input[type='checkbox']").change(function(){
alert("works");
});
jq(":checkbox").parent().click(function(evt) {
if (evt.target.type !== 'checkbox') {
var $checkbox = jq(":checkbox", this);
$checkbox.attr('checked', !$checkbox.attr('checked'));
$checkbox.change();
alert("");
}
});
Run Code Online (Sandbox Code Playgroud)
这些都不起作用,我被卡住了不知道还有什么可以尝试.
使用firebug检查复选框代码时,它看起来像这样:
<input type="checkbox" offval="no" value="false">
Run Code Online (Sandbox Code Playgroud) 我已经在我的应用程序中实现了这个流媒体(https://github.com/DigitalDJ/AudioStreamer),它运行得很棒,但它没有实现音量控制,任何人都有提示如何开始使用音量幻灯片等等?
我正在寻找一些类似的问题:
没有发现任何这些有用的回答我的问题,如何改变音量(上/下),当然钩到某种控制即滑块,任何帮助表示赞赏
我正在尝试创建一个可以从系统获取输入的Web应用程序.
这个应用程序应该做的是听一些shell脚本执行时会发生什么,并通过web报告状态.
一个例子 :
使用shell方面的哪种编程语言是将其传递给Web界面的最简单方法?我打算将JSP/JAVA用于web.
这是否是思考这个问题的正确方法?欢迎提出任何建议
编辑
像http://nodejs.org/这样的东西会对此有用吗?
我需要一些最不合适的数据结构.
以下是我正在使用的内容:我有一堆数据处理行,每行都有自己的国家/地区代码.
我希望得到每个国家/地区代码在整个过程中重复多少次.
显然我很想念UIImageView和UIImage,为了在图像上注册手势(如点击/点击),我需要在uiimageview中有图像并在uiimageview上注册手势而不是在uiimage上.
所以这段代码对我有用:
- (void)drawRect:(CGRect)rect {
Obj *obj = ... obj has imageHref which is NSString
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]];
[image drawInRect:CGRectMake((self.frame.size.width/2) - (image.size.with/2), (self.frame.size.height / 2) - (image.size.height / 2), image.size.width, image.size.height)];
}
Run Code Online (Sandbox Code Playgroud)
这给了我居中的图像,但没用,因为我希望它可以点击,所以我只是用UIImageview来做这样的:
- (void)drawRect:(CGRect)rect {
Obj *obj = ... obj has imageHref which is NSString
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]];
CGRect rect1=CGRectMake((self.frame.size.width/2) - (image.size.width/2), (self.frame.size.height / 2) - (image.size.height / 2), image.size.width, image.size.height);
UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:radioStationImage];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self …Run Code Online (Sandbox Code Playgroud)