你如何进行单元测试使用和修改DOM的javascript?
我举一个简单的例子.一个表单验证器,用于检查用javascript编写并使用JQuery的空白文本字段.
function Validator() {
this.isBlank = function(id) {
if ($(id).val() == '') {
return true;
} else {
return false;
}
};
this.validate = function(inputs) {
var errors = false;
for (var field in inputs) {
if (this.isBlank(inputs[field])) {
errors = true;
break;
}
}
return errors;
};
}
Run Code Online (Sandbox Code Playgroud)
用法:
var validator = new Validator();
var fields = { field_1 : '#username', field_2 : '#email' };
if (!validator.validate(fields)) {
console.log('validation failed');
} else {
console.log('validation passed');
}
Run Code Online (Sandbox Code Playgroud)
尝试对此类单元进行单元测试的最佳做法是什么?
我有以下代码,它将自定义帖子类型添加到管理短划线,并将自定义元框添加到帖子编辑窗口:
function teasers_custom_init() {
$labels = array(
'name' => 'Teasers',
'singular_name' => 'Teaser',
'add_new' => 'Add New',
'add_new_item' => 'Add New Teasers',
'edit_item' => 'Edit Teaser',
'new_item' => 'New Teaser',
'all_items' => 'All Teasers',
'view_item' => 'View Teaser',
'search_items' => 'Search Teasers',
'not_found' => 'No teasers found',
'not_found_in_trash' => 'No teasers found in Trash',
'parent_item_colon' => 'Parent Page',
'menu_name' => 'Teasers'
);
$args = array(
'labels' => $labels,
'description' => 'set slider panels with loop times',
'public' => true,
'publicly_queryable' …Run Code Online (Sandbox Code Playgroud) 我试图改变emacs 24中的模式行的样式.
我想添加一个上划线和一个下划线.下划线工作正常,但由于某种原因,上线不起作用.这是我到目前为止的代码(添加到.emacs):
(set-face-attribute 'mode-line nil
:foreground "gray0"
:background "cyan"
:overline "cyan"
:underline "cyan")
Run Code Online (Sandbox Code Playgroud)
关于如何使用上线工作的任何想法?
还有一种方法来设置边框和文本之间的距离?
谢谢
我目前正在尝试对地址进行地址解析,但是在获取准确的坐标时遇到问题。例如,如果我在Google地图中输入地址,则它可以正确显示,但是如果我对相同的地址进行地址解析,则只能从地址解析json响应中获得一个APPROXIMATE位置类型,以及不同的坐标。
是什么引起差异,我有什么办法可以提高我的地理编码的准确性,从而达到手动进行Google地图地址搜索的水平?
我不知道这里发生了什么.代码是:
if( true ) {
console.log('In first function definition');
function test(){
console.log('Hello world');
}
} else {
console.log('In the second function definition');
function test(){
console.log('Goodbye world');
}
}
test();
Run Code Online (Sandbox Code Playgroud)
我希望这会登录控制台:
'In the first function definition'
'Hello world'
Run Code Online (Sandbox Code Playgroud)
但相反它记录:
'In the first function definition'
'Goodbye world'
Run Code Online (Sandbox Code Playgroud)
当代码没有进入该分支时,如何创建第二个命名函数?
有没有办法阻止Android移动设备将文本包装到屏幕宽度?
布局容器宽度被保留(表,td)但是android坚持包装文本以适应屏幕宽度.
这是为html新闻简报,所以我需要一些东西坚持在媒体查询,什么也没有
<head></head>
Run Code Online (Sandbox Code Playgroud)
标签,因为这将被邮件客户端剥离.
干杯
有人可以向我解释这些目录中存储了哪种数据?
例如,我现在有一个活动会话(使用auth)但会话目录是空的?
什么存储在缓存文件夹中的文件夹(模型,持久性,视图)中?
在持久性文件夹中,我有一个名为"myapp_cake_core_cake_dev_en-us"的文件,如果我打开,我可以看到:
1363808159
a:1:{s:11:"LC_MESSAGES";a:0:{}}
Run Code Online (Sandbox Code Playgroud)
请尽可能具体.
想象一下,我们有一个文本字段,在每个keydown事件上执行以下代码:
if( $('#my_input').val() == '' )
$('#my_span').html('my input is blank');
else
$('#my_span').html('My input is not blank');
Run Code Online (Sandbox Code Playgroud)
显然,我们正在执行可能将某事物(#my_span元素)的状态设置为已经存在的代码,这似乎效率低下.但我很好奇这个替代方案是什么?添加更多支票,例如:
if ( $('#my_input').val() == '' ){
if ( $('#my_span').html() != 'my input is blank' )
$('#my_span').html('my input is blank');
}
else if ( $('#my_span').html() != 'My input is not blank' )
$('#myspan').html('My input is not blank');
Run Code Online (Sandbox Code Playgroud)
后者更有效率吗?在我看来它更"正确",但显然它是更多的代码,我不确定它比第一个例子更有效.
我知道前者总是涉及DOM操作,这将考虑计算相对效率,但我之前在非DOM相关代码中遇到过这样的情况,所以想知道在所有情况下什么是最好的方法.在将其设置为新值之前,是否应始终对某些值进行额外检查?
编辑:
我的最终版本实际上使用了这里的答案的组合,所以感谢所有的回复.总而言之,我现在:
另外,keydown上的setTimeout是一种非常好的方法来立即获取输入字段值.再次感谢.
如何使用节点http模块(没有第3方库)将文件上传到远程服务器?
我尝试了以下操作,但不起作用(服务器上没有数据):
function writeBinaryPostData(req, filepath) {
var fs = require('fs');
var boundaryKey = Math.random().toString(16); // random string
var boundaryStart = `--${boundaryKey}\r\n`,
boundaryEnd = `\r\n--${boundaryKey}--`,
contentDispositionHeader = 'Content-Disposition: form-data; name="file" filename="file.txt"\r\n',
contentTypeHeader = 'Content-Type: application/octet-stream\r\n',
transferEncodingHeader = 'Content-Transfer-Encoding: binary\r\n';
var contentLength = Buffer.byteLength(
boundaryStart +
boundaryEnd +
contentDispositionHeader +
contentTypeHeader +
transferEncodingHeader
) + fs.statSync(filepath).size;
var contentLengthHeader = `Content-Length: ${contentLength}\r\n`;
req.setHeader('Content-Length', contentLength);
req.setHeader('Content-Type', 'multipart/form-data; boundary=' + boundaryKey);
req.write(
boundaryStart +
contentTypeHeader +
contentDispositionHeader +
transferEncodingHeader
);
fs.createReadStream(filepath, { bufferSize: 4 * …Run Code Online (Sandbox Code Playgroud) javascript ×3
android ×1
caching ×1
cakephp ×1
dot-emacs ×1
emacs ×1
emacs24 ×1
file-upload ×1
geocoding ×1
google-maps ×1
html ×1
http ×1
jquery ×1
modeline ×1
newsletter ×1
node.js ×1
performance ×1
session ×1
tmp ×1
unit-testing ×1
unix ×1
wordpress ×1