我正在尝试使用Intern测试框架来自动测试通过node.js和StrongLoop实现的简单REST
API。StrongLoop提供了一个浏览器网页,我已使用该网页来验证是否已实现REST API,并且可以从Postman手动测试该API。
我尝试使用intern.js进行的第一个API测试将检索集合中媒体对象的数量。HTTP方法为GET,URL为http://localhost:3000/api/media/count
,响应为{“
count”:2}。
当我运行intern.js测试时,收到错误消息“错误:尝试要求卸载模块http”。
我的node.js应用程序中有一个\ tests子目录。我的测试用例是media.js:
define([
'intern!object',
'intern/chai!assert'
], function (registerSuite, assert, media) {
registerSuite({
name: 'media',
count: function() {
var http = require("http");
var request = http.request;
request({
url: "http://localhost:3000/api/media/count",
method: "GET"
}, function (error, response, body) {
console.log("Status", response.statusCode);
console.log("Headers", JSON.stringify(response.headers));
console.log("Response received", body);
});
assert.strictEqual(body, '{"count": 2}',
url + ' should return 2 items');
}
});
});
我的intern.js配置文件是:
// Learn more about configuring this file at <https://github.com/theintern/intern/wiki/Configuring-Intern>.
// These default settings work OK for most people. The options that *must* be changed below are the
// packages, suites, excludeInstrumentation, and (if you want functional tests) functionalSuites.
define({
// The port on which the instrumenting proxy will listen
proxyPort: 9000,
// A fully qualified URL to the Intern proxy
proxyUrl: 'http://localhost:9000/',
// Default desired capabilities for all environments. Individual capabilities can be overridden by any of the
// specified browser environments in the `environments` array below as well. See
// https://code.google.com/p/selenium/wiki/DesiredCapabilities for standard Selenium capabilities and
// https://saucelabs.com/docs/additional-config#desired-capabilities for Sauce Labs capabilities.
// Note that the `build` capability will be filled in with the current commit ID from the Travis CI environment
// automatically
capabilities: {
'selenium-version': '2.41.0'
},
// Browsers to run integration testing against. Note that version numbers must be strings if used with Sauce
// OnDemand. Options that will be permutated are browserName, version, platform, and platformVersion; any other
// capabilities options specified for an environment will be copied as-is
environments: [
{ browserName: 'internet explorer', version: '11', platform: 'Windows 8.1' },
{ browserName: 'internet explorer', version: '10', platform: 'Windows 8' },
{ browserName: 'internet explorer', version: '9', platform: 'Windows 7' },
{ browserName: 'firefox', version: '28', platform: [ 'OS X 10.9', 'Windows 7', 'Linux' ] },
{ browserName: 'chrome', version: '34', platform: [ 'OS X 10.9', 'Windows 7', 'Linux' ] },
{ browserName: 'safari', version: '6', platform: 'OS X 10.8' },
{ browserName: 'safari', version: '7', platform: 'OS X 10.9' }
],
// Maximum number of simultaneous integration tests that should be executed on the remote WebDriver service
maxConcurrency: 3,
// Name of the tunnel class to use for WebDriver tests
tunnel: 'SauceLabsTunnel',
// The desired AMD loader to use when running unit tests (client.html/client.js). Omit to use the default Dojo
// loader
useLoader: {
'host-node': 'dojo/dojo',
'host-browser': 'node_modules/dojo/dojo.js'
},
// Configuration options for the module loader; any AMD configuration options supported by the specified AMD loader
// can be used here
loader: {
// Packages that should be registered with the loader in each testing environment
packages: [
{ name: 'app', location: '.' },
]
},
// Non-functional test suite(s) to run in each browser
suites: [ 'tests/media' /* 'myPackage/tests/foo', 'myPackage/tests/bar' */ ],
// Functional test suite(s) to run in each browser once non-functional tests are completed
functionalSuites: [ /* 'myPackage/tests/functional' */ ],
// A regular expression matching URLs to files that should not be included in code coverage analysis
excludeInstrumentation: /^(?:tests|node_modules)\//
});
我使用命令`c:\ Repositories \ app> intern-client config = tests /
intern’运行测试,并产生以下控制台输出:
c:\Repositories\app>intern-client config=tests/intern
FAIL: main - media - count (0ms)
Error: Attempt to require unloaded module http.request
at contextRequire <D:\Users\username\AppData\Roaming\npm\node_modules\inte
rn\node_modules\dojo\dojo.js:255:12>
at req <D:\Users\username\AppData\Roaming\npm\node_modules\intern\node_mod
ules\dojo\dojo.js:30:10>
at Test.registerSuite.count [as test] <tests\media.js:23:27>
at Test.run <D:\Users\username\AppData\Roaming\npm\node_modules\intern\lib
\Test.js:169:19>
at <D:\Users\username\AppData\Roaming\npm\node_modules\intern\lib\Suite.js:
237:13>
at signalListener <D:\Users\username\AppData\Roaming\npm\node_modules\inte
rn\node_modules\dojo\Deferred.js:37:21>
at Promise.then.promise.then <D:\Users\username\AppData\Roaming\npm\node_m
odules\intern\node_modules\dojo\Deferred.js:258:5>
at runTest <D:\Users\username\AppData\Roaming\npm\node_modules\intern\lib\
Suite.js:236:46>
at <D:\Users\username\AppData\Roaming\npm\node_modules\intern\lib\Suite.js:
249:7>
at process._tickCallback <node.js:419:13>
1/1 tests failed
1/1 tests failed
---------------|-----------|-----------|-----------|-----------|
File | % Stmts |% Branches | % Funcs | % Lines |
---------------|-----------|-----------|-----------|-----------|
tests\ | 33.33 | 100 | 66.67 | 33.33 |
media.js | 33.33 | 100 | 66.67 | 33.33 |
---------------|-----------|-----------|-----------|-----------|
All files | 33.33 | 100 | 66.67 | 33.33 |
---------------|-----------|-----------|-----------|-----------|
我的理解是http模块是随node.js自动安装的核心模块,但是我想知道intern.js尽管是基于节点的,但如果没有其他配置,是否不允许访问核心模块。这似乎很合理,但是我查看了intern.js教程和intern.js配置指南,但没有找到添加引用或依赖项的方法,以使测试用例能够成功加载node.js
http模块。 。我是intern.js的新手,所以希望我没有正确配置它或测试。
我欢迎任何对我做错事情的投入/见解。
最好的祝福,
兆瓦
Intern在AMD环境中运行其测试,因此require
AMD加载程序(require
而不是Node 加载器)也要在其中运行,因此是您的错误。
要加载Node模块,请使用intern/dojo/node!
AMD插件并将其包含在模块的依赖项中,例如:
define([
...,
'intern/dojo/node!http'
], function (..., http) {
// Now http contains the exports of Node's http module
});
这在《 Intern用户指南》的“ 测试CommonJS模块 ”下进行了记录。
文件可以从相对于省道脚本文件的目录中读取,简单地称为。 但是,在IDE中运行的颤振测试无法读取该文件。 加载为资源(不是,因为我不想在应用程序中捆绑测试数据文件)在测试中也不起作用。 在flatter中读取文件的好方法是什么(对于命令行测试和IDE测试)? 运行非常快。然而,IntellijIDE内部的测试速度非常慢,但它可以设置调试断点并单步执行和查看变量。所以这两种测试都非常有用。
问题内容: 我有一个要测试使用的应用程序,但是有一些问题。我的目录结构如下: 我想测试中的和模块,然后尝试做 但是在我不能导入我的目录包。 我该如何工作? 基本上,我想从测试的应用程序与和单独的目录。 我尝试将追加到,但是当我从导入时,我仍然从unittest得到一个。 编辑:我的导入和声明是: 和回溯: 问题答案: 要做的一件非常错误的事情是在上附加一个相对路径。如果要确定路径,请进行以下操作:
我有需要测试的REST服务。该服务具有Spring Security身份验证,我需要在测试或模拟中关闭它。我决定嘲笑它,因为我不能关掉它。我为此编写了,但现在未加载上下文: 在我的主要源代码中,我有一些config类加载了一些其他bean,而it类在我的测试中没有加载,我有一个例外: 我做错了什么?有人能帮我吗?我使用了,但在该版本中,无法工作,因为属性不再存在。
我在mvn中有以下结构。 模块A是所有后续模块(B、C、...)继承的模块。该模块具有通用功能和jUnit/联调用例。它不是Web应用程序。 模块B是一个web应用程序。它依赖于模块B。 模块C是一个web应用程序。它依赖于模块B。 我们的Jersey rest/api代码位于模块A中。通过这种方式,无论我们部署什么模块,我们都可以访问rest/api。 到目前为止,我已经成功地在模块C中配置了M
好的,我的服务器是建立在EC2上的。我的堆栈是作为负载均衡器的Nginx,用于管理node.js的进程的supervisord,即每个cpu都有一个进程,而redis,主和从都在单独的盒子上。我通过测试故障转移和使服务脱机进行了压力测试。使用apache AB,我可以在服务器上获得多达6500 qps的数据。 现在,我需要远程加载测试。什么是最好的开源工具来完成这一点,甚至是最具成本效益的SaaS
问题内容: 如何在Keras中从HDF5文件加载模型? 我试过的 上面的代码将最佳模型成功保存到名为weights.hdf5的文件中。然后,我要加载该模型。下面的代码显示了我如何尝试这样做: 这是我得到的错误: 问题答案: 仅设置网络的权重。您仍然需要在调用之前定义其体系结构: