小编BIO*_*IOS的帖子

单元测试涉及DOM的Javascript

你如何进行单元测试使用和修改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)

尝试对此类单元进行单元测试的最佳做法是什么?

javascript unit-testing

31
推荐指数
3
解决办法
1万
查看次数

在wordpress中将多个元框添加到自定义帖子类型

我有以下代码,它将自定义帖子类型添加到管理短划线,并将自定义元框添加到帖子编辑窗口:

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)

wordpress custom-post-type

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

Unix命令删除目录中的所有文件但保留目录

我正在寻找一个unix命令来删除目录中的所有文件而不删除目录本身.(注意该目录不包含子目录).

unix

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

Emacs 24:模式线样式

我试图改变emacs 24中的模式行的样式.

我想添加一个上划线和一个下划线.下划线工作正常,但由于某种原因,上线不起作用.这是我到目前为止的代码(添加到.emacs):

(set-face-attribute 'mode-line nil
   :foreground "gray0"
   :background "cyan"
   :overline "cyan"
   :underline "cyan")
Run Code Online (Sandbox Code Playgroud)

关于如何使用上线工作的任何想法?

还有一种方法来设置边框和文本之间的距离?

谢谢

emacs dot-emacs modeline emacs24

7
推荐指数
1
解决办法
1953
查看次数

Google Maps API:Geocode返回的坐标不同于Google Maps

我目前正在尝试对地址进行地址解析,但是在获取准确的坐标时遇到问题。例如,如果我在Google地图中输入地址,则它可以正确显示,但是如果我对相同的地址进行地址解析,则只能从地址解析json响应中获得一个APPROXIMATE位置类型,以及不同的坐标。

是什么引起差异,我有什么办法可以提高我的地理编码的准确性,从而达到手动进行Google地图地址搜索的水平?

google-maps geocoding

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

Javascript命名的函数定义在不应该执行时执行

我不知道这里发生了什么.代码是:

  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)

当代码没有进入该分支时,如何创建第二个命名函数?

javascript

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

Android设备将文本包装到屏幕宽度

有没有办法阻止Android移动设备将文本包装到屏幕宽度?

布局容器宽度被保留(表,td)但是android坚持包装文本以适应屏幕宽度.

这是为html新闻简报,所以我需要一些东西坚持在媒体查询,什么也没有

<head></head> 
Run Code Online (Sandbox Code Playgroud)

标签,因为这将被邮件客户端剥离.

干杯

html android newsletter

3
推荐指数
1
解决办法
1956
查看次数

Cakephp tmp目录:缓存和会话文件夹

有人可以向我解释这些目录中存储了哪种数据?

例如,我现在有一个活动会话(使用auth)但会话目录是空的?

什么存储在缓存文件夹中的文件夹(模型,持久性,视图)中?

在持久性文件夹中,我有一个名为"myapp_cake_core_cake_dev_en-us"的文件,如果我打开,我可以看到:

1363808159
a:1:{s:11:"LC_MESSAGES";a:0:{}}
Run Code Online (Sandbox Code Playgroud)

请尽可能具体.

session caching cakephp tmp

3
推荐指数
1
解决办法
1万
查看次数

根据另一个元素的状态切换DOM元素值的最有效方法是什么?

想象一下,我们有一个文本字段,在每个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相关代码中遇到过这样的情况,所以想知道在所有情况下什么是最好的方法.在将其设置为新值之前,是否应始终对某些值进行额外检查?

编辑:

我的最终版本实际上使用了这里的答案的组合,所以感谢所有的回复.总而言之,我现在:

  • 在闭包中缓存jquery对象
  • 使用state来确定对新状态的分配

另外,keydown上的setTimeout是一种非常好的方法来立即获取输入字段值.再次感谢.

javascript performance jquery

3
推荐指数
1
解决办法
173
查看次数

使用节点http模块上传文件

如何使用节点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)

file-upload http node.js

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