小编akr*_*ymn的帖子

解析angular.js中的JSONP $ http.jsonp()响应

我正在使用angular的$http.jsonp()请求,该请求成功返回包含在函数中的json:

var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=jsonp_callback";

$http.jsonp(url).
    success(function(data, status, headers, config) {
        //what do I do here?
    }).
    error(function(data, status, headers, config) {
        $scope.error = true;
    });
Run Code Online (Sandbox Code Playgroud)

如何访问/解析返回的函数包装JSON?

javascript jsonp angularjs

113
推荐指数
4
解决办法
21万
查看次数

节点中的Supertest自定义快速服务器

请温柔地对待我.我是异步编码的新手,并且已经开始使用节点开发和API服务器进入密集型项目.我喜欢它,但有些事情并不是自然而然的.

我们的项目是使用express js构建的.我们有一个文件server.js,我们实例化一个快速服务器,然后实例化我们的路由器,依此类推.我需要对现在(部分)完整的服务器进行集成测试.通常我所做的是从命令行运行'%node server.js',然后使用python请求或curl make requests并检查响应.

现在我的任务是编写一个单元和集成测试套件,以便我们可以自动化我们的测试.我一直在使用mocha,现在我正在尝试使用supertest进行集成测试.问题是supertest需要一个服务器对象然后应用测试,但是构建我们的服务器对象的文件不会返回任何内容.我不想修改该文件,因此我对如何访问用于测试的服务器对象感到困惑.

我的服务器文件看起来(部分)像这样:

var express = require('express')

var app = express();

// Express Configuration
app.use(express.favicon()); //handles favicon request, which keeps it out of the log when using a browser :)
app.use(express.bodyParser()); //slurps up the body in chunks the node.js way :)
// ...and so on
Run Code Online (Sandbox Code Playgroud)

我的mocha测试文件看起来像这样

var request = require('supertest')
  , app     = require('../server.js')
  , assert  = require("assert");

describe('POST /', function(){
  it('should fail bad img_uri', function(done){
    request(app)
        .post('/')
        .send({
            'img_uri' : 'foobar'
        })  
        .expect(500)
        .end(function(err, …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing mocha.js node.js

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

如何在Jasmine中测试Angular控制器的局部变量

我有一个带局部变量的控制器

function IndexCtrl($scope) {
  var pagesById = [];
  loadPages();

  // snip

  function loadPages() {
    // pagesById gets populated
  }

  // snip
}
Run Code Online (Sandbox Code Playgroud)

我想测试pagesById是否正确填充但我不知道如何从我的it()中获取它.我不需要将此变量放在$ scope中,它只是一组中间信息,所以如果我可以避免将它添加到$ scope中,那将是理想的.

it('scope.pages should populated based on pages data.', function() {
    $httpBackend.flush();
    expect(pagesById).toEqualData(mock_page_results);
});
Run Code Online (Sandbox Code Playgroud)

给我

ReferenceError: pagesById is not defined
Run Code Online (Sandbox Code Playgroud)

除了将其附加到$ scope之外,我还有其他选择吗?

unit-testing jasmine angularjs

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

如何在茉莉花测试中模拟角度$资源

我试图测试一个使用angular的$资源的控制器.

function PermissionsCtrl($scope, $resource, $cookies) {
  var Object = $resource('/v1/objects/:id');
  loadObjects();

  function loadObjects() {
    $scope.myAppObjects = new Array();

    var data = AppObject.get({find: '{"app_id": '+wtm.app_id+'}'},
      function(){
        if (data.results) {
          for(var i = 0; i< data.results.length; i++) {
            if(!data.results[i].is_deleted) {
              (function(i){
                $scope.objects(data.results[i]);
              }(i));
            }
          }
        }
      },
      function(error){console.log(error);});
  }
Run Code Online (Sandbox Code Playgroud)

这是测试代码.

var apiServer = "...";
var app_id = 999
var mock_object_data = {...};


describe('apps permissionsCtrl', function(){
  var scope, ctrl, $httpBackend;

  // Create a matcher for comparing data 
  beforeEach( function() {
    this.addMatchers({
      toEqualData: function(expected) …
Run Code Online (Sandbox Code Playgroud)

unit-testing jasmine angularjs

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

Redis数据是否不稳定?

我想找出一些东西,我一直在寻找一段时间没有结果.

如果Redis服务器断电或关机或者擦拭RAM会发生什么?它在某处保留备份吗?

我想将Redis用于SaaS风格的应用程序,所以如果我去app.com/usernamesapp它将使用redis来验证usernamesapp是否存在并获取ID ...此时它将使用MySQL来完成所有其他的东西...原因是我想尽快开始显示页面,而且大部分内容都是javascript所以所有的MySQL都会在事后发生.

谢谢

redis

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

使用vim搜索和替换将JSON字段名称包含在引号中

我有一个简单的json文件格式不正确它看起来像:

{ ID: '092558667',  
  NAME: 'Store Made',  
  PARENT_CATEGORY_ID: '692558669',  
  INCLUDED_IN_NET_SALES: '1' }  
Run Code Online (Sandbox Code Playgroud)

我需要做的就是用双引号包装字段名称.在vim中,我得到的最接近的是将字段名称和冒号包装在引号中 - 显然我需要弄清楚如何在没有冒号包裹的情况下获取字符串.这是我正在尝试的:

:%s/[A-Z_]*:/"&"
Run Code Online (Sandbox Code Playgroud)

如果我将冒号留在查询之外,则整个文件最终被选中.

regex vim

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

我试图单元测试Silex应用程序,但无法找到Silex\WebTestCase命名空间

我安装了phpunit 3.6.12以及Silex.在我的应用程序的根目录中,我有测试目录,其中包含简单的测试文件BlogFunctionTest.php

<?

use Silex\WebTestCase;

// BLOG: Front end test
class BlogFunctionalTest extends Silex\WebTestCase
{
    public function testIndex()
    {
        $this->assertGreaterThan(0, 1);
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行phpunit时,我收到错误

PHP Fatal error:  Class 'Silex\WebTestCase' not found in {path}/BlogFunctionTest.php line 7
Run Code Online (Sandbox Code Playgroud)

这是指我尝试扩展WebTestCase的行.如果我更换也会发生同样的情况

use Silex\WebTestCase;
Run Code Online (Sandbox Code Playgroud)

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
Run Code Online (Sandbox Code Playgroud)

Silex是相对于我的测试文件安装的

../vendor/silex/
Run Code Online (Sandbox Code Playgroud)

非常感谢任何提示,谢谢!

phpunit symfony silex

4
推荐指数
1
解决办法
3129
查看次数

async.filter在所有迭代器完成之前调用回调

我正在使用caolan的async.js.我很困惑为什么在所有迭代器完成之前调用回调.当我运行以下代码时:

  async.filter(matched_objects.fields, function(item, callback) {
      console.log('checking field: ' + item.id);
      if(item.id == 130 || item.id == 131) {
        console.log('calling field true: ' + item.id);
        callback(true);
      } 
      callback(false);
    },
    function(fieldResults) {
      console.log('fieldsResults.length=' + fieldResults.length);
    });
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

checking field: 130 
calling field true: 130 
fieldsResults.length=1 
checking field: 131
calling field true: 131 
Run Code Online (Sandbox Code Playgroud)

对于我来说,results.fields在过滤器循环中检查第二项之前调用回调中的console.log是没有任何意义的.

javascript async.js

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