我是新手测试并试图了解如何测试一个相当简单的控制器动作.我遇到的问题是不知道如何完成模拟控制器内部的方法,甚至不知道何时适合这样做.
该操作在我的webapp的db中创建一个挂起的用户并返回一个join链接.它看起来像这样:
module.exports = {
create: function(req, res, next) {
var name,
invitee = req.allParams();
if ( _.isEmpty(invitee) || invitee.name === undefined) {
return res.badRequest('Invalid parameters provided when trying to create a new pending user.');
}
// Parse the name into its parts.
name = invitee.name.split(' ');
delete invitee.name;
invitee.firstName = name[0];
invitee.lastName = name[1];
// Create the pending user and send response.
PendingUser.create(invitee, function(err, pending) {
var link;
if (err && err.code === 'E_VALIDATION') {
req.session.flash = { 'err': …Run Code Online (Sandbox Code Playgroud) 假设我有一个包含属性的模式:x/value,其中:x/value是一个组件,是一个ref,并且基数很多.架构还有一个x的id :x/id.
现在让我们说我说我做了以下事情:
(d/transact conn [{:x/id "1234" :x/value [{:text "test"}]}])
Run Code Online (Sandbox Code Playgroud)
然后我想更新值,这意味着我想要替换:x/value,所以最后我有一个像这样的实体:
{:db/id <some eid>
:x/id "1234"
:x/value [{:text "replacement"}]}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
到目前为止,我尝试过以下方法:
(d/transact conn [{:x/id "1234" :x/value [{:text "replacement"}]}])
Run Code Online (Sandbox Code Playgroud)
但这只是添加了一个新的参考,所以我有一个实体看起来像:
{:db/id <some eid>
:x/id "1234"
:x/value [{:text "test"} {:text "replacement"}]}
Run Code Online (Sandbox Code Playgroud)
我认为,实现我想要的方法的一种方法是通过实体id手动收回两个:text属性,然后为x实体执行新的添加事务.
但我想知道是否有更好的方法来做到这一点.有任何想法吗?
尝试使用以下命令将jupyter笔记本转换为pdf时:
jupyter nbconvert --to pdf "Search and Other Content Finding Features.ipynb"
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
! Missing $ inserted.
<inserted text>
$
l.380 ... Other Content Finding Features_10_0.png}
?
! Emergency stop.
<inserted text>
$
l.380 ... Other Content Finding Features_10_0.png}
Run Code Online (Sandbox Code Playgroud)
我发现这里有一些讨论。
但是,我在代码中找不到这些字符。可能还有其他原因吗?
假设我有一个变量,可以是JavaScript错误对象,也可以是空对象,如何在Flow中指定空对象?
我尝试过在各种地方(例如here)看到的一种可能性如下所示:
const err: Error | {||} = {};
Run Code Online (Sandbox Code Playgroud)
但这会产生以下流错误:
1: const exact: {||} = {};
^ Cannot assign object literal to `exact` because inexact object literal [1] is incompatible with exact object type [2].
References:
1: const exact: {||} = {};
^ [1]
1: const exact: {||} = {};
^ [2]
Run Code Online (Sandbox Code Playgroud)
看到它住在这里。该||符号显然$Exact<>是这里所述的简写形式。所以我看不出为什么这确实失败了。
这是说我要分配给的空对象err是“ inexact对象常量”。我知道这是一个对象文字,实际上与空对象的“精确对象类型”不匹配。
我不明白的是为什么它不精确。在运行时它是一个空对象,这似乎很准确。有人可以在这里解释逻辑和/或如何指定err是Error一个空对象还是一个空对象?
我在Google Play图书上阅读的一本书中记录了一系列笔记.有没有办法将这些笔记一起导出为文本文档或类似格式?
我有一个配置为如下的browserify任务:
module.exports = function(grunt) {
grunt.config.set('browserify', {
dev: {
src: 'assets/js/main.jsx',
dest: '.tmp/public/js/main.js',
options: {
debug: true,
extensions: ['.jsx'],
transform: ['reactify']
}
}
});
grunt.loadNpmTasks('grunt-browserify');
};
Run Code Online (Sandbox Code Playgroud)
我尝试将其配置为以这种方式使用es6:
module.exports = function(grunt) {
grunt.config.set('browserify', {
dev: {
src: 'assets/js/main.jsx',
dest: '.tmp/public/js/main.js',
options: {
debug: true,
extensions: ['.jsx'],
transform: ['reactify', {'es6': true}]
}
}
});
grunt.loadNpmTasks('grunt-browserify');
};
Run Code Online (Sandbox Code Playgroud)
但是,这将导致错误:
错误:路径必须是字符串
鉴于我不想在package.json中配置转换,因此我无法从文档中了解如何执行此操作。任何帮助,将不胜感激。
我正在尝试使用 nodegit 将 git 视为内容的数据库。因此,我正在编写函数来访问 repo 中的内容。我能够检索关于给定文件的文件 blob 和其他信息,但我正在努力获取时间戳信息。
我想获得 1) 创建文件的日期,以及 2) 上次更新的日期。但到目前为止,我还没有弄清楚这怎么可能。
为了获取文件,我需要按照以下步骤操作:
1)Commit使用检索最新的getMasterCommit。
2) 从 中Commit,TreeEntry使用getEntry.
3) 从TreeEntry,获取各种元数据,然后获取Blobwith getBlob。
4) 从Blob,获取其他元数据以及文件的原始文本。
问题是,我唯一能得到我找到的日期的地方是Commit,它有一个date函数。这可能有助于获取上次更新日期,但实际上并没有帮助,因为它只返回Commmit(显然!)的日期,但尚不清楚该文件是否已针对该提交进行了更新。
我还希望能够获取为给定文件创建的日期。我可以想象这可能通过搜索给定 TreeEntry 的提交历史来获得,但我尚不清楚如何做到这一点。事实上,能够搜索给定文件的提交历史可能是这里需要的东西。但我一直无法看到这是否可能。
有人可以在这里提供指导吗?
我有一个 SQS 队列 (Q),它通过onFailureLambda 函数 (F) 的“目的地”设置接收消息。Lambda 函数由 EventBridge 事件总线“规则”触发。
我的问题是:我可以配置队列 Q 的重新驱动策略,以便我可以将消息直接重新驱动到函数 F 吗?
目前,我已将重新驱动允许策略设置为allowAll,但控制台中的“启动 DLQ 重新驱动”按钮被禁用。查看驱动器允许策略的配置设置,我感觉只有其他队列可以成为重新驱动的目标。
令我困惑的是,我的目标是使用onFailure“目的地”功能。仅当异步调用函数且队列同步触发 lambda 时才能使用目标。因此,如果我在 lambda 函数 F 前面放置一个队列,该队列可能是重新驱动的目标,那么我将无法使用该onFailure目标。
我正在尝试在测试时编写一个Sails.Js控制器动作来下载用户的头像图像.控制器操作如下所示:
/**
* Download avatar of the user with the specified id
*
* (GET /user/:id/avatar)
*/
avatar: function (req, res) {
req.validate({
id: 'string'
});
User.findOne(req.param('id')).exec(function (err, user){
if (err) return res.negotiate(err);
if (!user) return res.notFound();
// User has no avatar image uploaded.
// (should have never have hit this endpoint and used the default image)
if (!user.avatarFd) {
return res.notFound();
}
var SkipperDisk = require('skipper-disk');
var fileAdapter = SkipperDisk(/* optional opts */);
// Stream the file down
fileAdapter.read(user.avatarFd) …Run Code Online (Sandbox Code Playgroud) 这是一个简单的问题,我无法找到答案.我刚刚开始使用docpad来构建一个站点.我在HTML5 Boilerplate骨架中遇到以下行:
<%- @getBlock('styles').add(["/style.css"]).toHTML() %>
有谁知道这是做什么的.端点是它输出以下html:
<link rel="stylesheet" href="/style.css" />
但我不确定这里的内容是什么,为什么这个简单的css链接是以这种方式生成的.
任何照明都将非常感激.
更新
在玩了这个之后,似乎@getBlock所做的是输出某个html代码块.在这种情况下,样式似乎指定代码.如果这是正确的,那么知道什么是Docpad中的其他块,或者@getBlock函数(?)来自哪个其他框架...
javascript ×2
mocha.js ×2
sails.js ×2
amazon-sqs ×1
aws-lambda ×1
clojure ×1
datomic ×1
docpad ×1
download ×1
flowtype ×1
git ×1
google-books ×1
jsx ×1
latex ×1
nbconvert ×1
nodegit ×1
should.js ×1
sinon ×1
unit-testing ×1