我将如何在节点中对S3上传进行存根。js?
为了获得洞察力,我使用摩卡进行测试,使用Sinon进行存根,但我愿意改变任何事情。我有一个文件,它导出一个执行上载的函数。看起来是这样的:
var AWS = require('aws-sdk');
var s3 = new AWS.S3({ params: { Bucket: process.env.S3_BUCKET }});
var params = { Key: key, Body: body };
s3.upload(params, function (error, data) {
// Handle upload or error
});
如果我尝试存根AWS。S3
或AWS。S3。原型,没有任何变化。我假设这是因为我的测试需要aws sdk
本身,并且每个函数都有自己的副本。
我的测试是这样的:
describe('POST /files', function () {
var url = baseURL + '/files';
it('uploads the file to s3', function (done) {
var fs = require('fs');
var formData = {
video: fs.createReadStream(process.cwd() + '/test/support/video.mp4')
};
var params = {url: url, formData: formData};
request.post(params, function (error, response, body) {
expect(response.statusCode).to.eq(200);
expect(response.body).to.eq('Uploaded');
done();
});
});
});
这个测试工作正常,但它不会将上传存根到S3,因此上传实际上要经过:X。
s3UploadStub = AWS.S3.prototype.upload = sandbox.stub();
it("should upload successfully", async function() {
s3UploadStub.yields(null, data);
let response = await FileUtil.uploadFile(fileReference,data);
expect(s3UploadStub.calledOnce).to.be.true;
expect(response.statusCode).to.equal(200);
expect(response.body).to.equal(fileReference);
});
你可以用锡农存根。如果您愿意,请按如下所示进行操作:
>
var AWS = require('aws-sdk');
var s3 = new AWS.S3({ params: { Bucket: process.env.S3_BUCKET }});
var params = { Key: key, Body: body };
exports.s3.upload(params, function (error, data) {
});
//Expose S3 instance
exports.s3 = s3;
将同一个实例作为存根,如下所示:
var sinon = require('sinon');
//Import module you are going to test
var UploadService = require('./uploadService');
describe('POST /files', function () {
before(function() {
//Stub before, and specify what data you'd like in the callback.
this.uploadS3Stub = sinon.stub(uploadService.s3, 'upload').callsArgWith(1, null, { data: 'Desired response' });
});
after(function() {
//Restore after
this.uploadS3Stub.restore();
});
var url = baseURL + '/files';
it('uploads the file to s3', function (done) {
var fs = require('fs');
var formData = {
video: fs.createReadStream(process.cwd() + '/test/support/video.mp4')
};
var params = {url: url, formData: formData};
var self = this;
request.post(params, function (error, response, body) {
expect(response.statusCode).to.eq(200);
expect(response.body).to.eq('Uploaded');
//You can also check whether the stub was called :)
expect(self.uploadS3Stub.calledOnce).to.eql(true);
done();
});
});
});
在节点中模拟S3有几个选项。
一些特定于S3的模块:
一些用于一般AWS模拟的模块:
您甚至可以启动一个简单的服务器来响应一些S3 API调用:
最后一个可以很容易地在其他语言和运行时使用,而不仅仅是在节点中。
我只是一个初学者node.js我会尝试用xpress制作一个站点,这样我就可以在那里上传任何东西。我在我的mac上本地设置服务器。 这是我写的代码 server.js 这些是错误信息 节点上载。js公司 /Users/dayatura/Documents/node/node\u modules/express/lib/application。js:209抛出新的TypeError('app.use
问题内容: 我正在尝试用以下方法卸载React.js节点 但是它又回来了。 在当我点击一个元素上,而应卸载根节点被激发。此处的文档 我也尝试过: React.unmountComponentAtNode($(’* [data-reactid =“’+ this._rootNodeID +’”]’)[0]) 该选择器可与一起使用,但不能与之卸载,但文档指出它应为,就像您将用于 经过更多测试之后,结果
我正在通过Node.js1的[node-java]包装器运行一个JNA编译的本机库 这个库是Hunsplaw JNA,它包装了Hunsplaw拼写库。 当试图从lib路径加载本机库时,所发生的情况是节点似乎挂起: 库就在那里,我也尝试了该方法的第二个选项,复制到一个临时文件夹中并从那里加载,这样我就可以看到 它就在那里。
我用jstree制作了一个树,它部分加载,并在扩展节点时通过json_data插件加载。这里是代码的关键: 然后,我想展开一些节点,并选择一个叶节点,这取决于哪个用户正在访问站点。我在一个循环中执行此操作,如下所示: 打开父节点可以正常工作,并且当树显示但firstChild节点未打开时,firstChild将公开。如果我再次启动循环,firstchild将成功打开以显示叶节点。 我的猜测是,当上
我有一个csv格式的数据集。其中一个字段是“elem_type”。基于此类型,我需要创建不同的类型节点,并在使用csv load加载数据时,根据“elem_type”为csv的“列”赋予不同的名称,有什么方法可以做到这一点吗? 我的csv没有标头,数据如下所示: 基于第一个colmuns,即我的“elem_type”,我要加载数据并定义3种类型的节点(Person,Car,Boat)
我试图将一些JSON对象映射到java对象,然后将这些对象保存到我的neo4j DB中。 我想知道是否有使用neo4j-ogm的解决方案,或者我需要添加Spring Data Neo4J(SDN)来解决这个问题?