我正在使用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?
请温柔地对待我.我是异步编码的新手,并且已经开始使用节点开发和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) 我有一个带局部变量的控制器
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之外,我还有其他选择吗?
我试图测试一个使用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) 我想找出一些东西,我一直在寻找一段时间没有结果.
如果Redis服务器断电或关机或者擦拭RAM会发生什么?它在某处保留备份吗?
我想将Redis用于SaaS风格的应用程序,所以如果我去app.com/usernamesapp它将使用redis来验证usernamesapp是否存在并获取ID ...此时它将使用MySQL来完成所有其他的东西...原因是我想尽快开始显示页面,而且大部分内容都是javascript所以所有的MySQL都会在事后发生.
谢谢
我有一个简单的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)
如果我将冒号留在查询之外,则整个文件最终被选中.
我安装了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)
非常感谢任何提示,谢谢!
我正在使用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是没有任何意义的.