我目前正在使用require.js开发,所以我可以快速迭代(更改文件,刷新页面,之间没有构建步骤),但我使用它webpack作为构建工具,因为它优于r.js.我想完全摆脱require.js并在开发中使用webpack作为脚本加载器.我知道这正是webpack dev server为了什么,但我特别不想使用它.
理想情况下,我只需要包含某种webpack加载器<script>,将其指向我的webpack.js构建配置,然后让它完成工作.
我使用RequireJS在我的一个项目中加载我的模块.我在网上看到了使用require呼叫要求模块的不同方式(而不是define).
让我们假设我有一个名为"JQuery"的模块,我想要它.我在示例中看到了两种方法:
这个:
require(["JQuery"], function($){
$.doSomething();
})
Run Code Online (Sandbox Code Playgroud)还有这个:
var $ = require("JQuery");
$.doSomething();
Run Code Online (Sandbox Code Playgroud)我的问题是,如果负载是异常的,就像RequireJS文档说的那样,第二个约定如何工作呢?我如何确定$已定义并且第二行在第二行执行之前完成?
如果声明SPEC Env,我试图有条件地加载我的测试:
var context = null
if (process.env.SPEC) {
context = require.context('./tests', true, /.*?SearchInput.*/);
}
context.keys().forEach(context);
Run Code Online (Sandbox Code Playgroud)
这非常有效.现在,如果我这样做
var context = null
if (process.env.SPEC) {
var c = /.*?SearchInput.*/;
context = require.context('./tests', true, c);
}
context.keys().forEach(context);
Run Code Online (Sandbox Code Playgroud)
这根本不起作用,并且./中的所有文件都匹配('./tests'参数被忽略)
我错过了什么?我希望require.context函数的第三个参数是一个RegExp对象,所以我可以使用一个变量构造RegExp.
编辑1
这不起作用:
var context = null
if (process.env.SPEC) {
var c = new RegExp(/.*?SearchInput.*/);
context = require.context('./tests', true, c);
}
context.keys().forEach(context);
Run Code Online (Sandbox Code Playgroud)
要测试这个,你可以编辑这个项目的tests.webpack.js文件:https: //github.com/erikras/react-redux-universal-hot-example
您需要允许SPEC变量通过webpack
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('test'),
SPEC: JSON.stringify(process.env.SPEC || null)
},
__CLIENT__: true,
__SERVER__: false,
__DEVELOPMENT__: true, …Run Code Online (Sandbox Code Playgroud) 我在使用jasmine和karma testrunner进行单元测试的指令访问我的控制器时遇到了一些问题.该指令如下所示:
指示
angular.module('Common.accountSearch',['ngRoute'])
.directive('accountSearch', [function() {
return {
controllerAs: 'ctrl',
controller: function ($scope, $element, $routeParams, $http) {
this.setAccount = function () {
var response = { AccountId : $scope.ctrl.searchedAccount.AccountId }
$scope.callback(response)
}
this.getAccounts = function(searchText){
return $http.get('/api/CRMAccounts', {
params: {
retrievalLimit: 10,
search: searchText
}
}).then(function(response){
return response.data;
});
}
},
scope : {
config : '=',
values : '=',
callback : '='
},
templateUrl : '/common/components/account-search/account-search.html',
restrict : 'EAC'
}
}]);
Run Code Online (Sandbox Code Playgroud)
这是测试用例文件到目前为止我认为所有都是正确的(我希望):
测试用例文件:
describe("Account search directive logic tests", …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
function A(): never {
throw new Error("fail");
}
function B(): never {
A();
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
index.ts(5,36): error TS2534: A function returning 'never' cannot have a reachable end point.
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?显然,A永远不会返回,因此B没有可达到的终点.
我创建了一个文件夹:MyFirstNodeAppl,在其中,我创建了一个测试文件夹,其中包含需要使用mocha框架运行的所有测试.
我还创建了一个名为MakeFile的make文件和内容详细信息,如下所述:
test:
@./node_modules/.bin/mocha -u tdd
.PHONY: test
Run Code Online (Sandbox Code Playgroud)
package.json与test和MakeFile处于同一级别,其内容如下所述:
{
"name": "nockmarket",
"version": "0.0.1",
"private": true,
"dependencies": {
"jquery" : "1.7.3",
"mocha": "1.3.0",
"should": "1.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
设置完上述内容后,我使用node命令提示符窗口运行了npm install命令.现在我知道Mocha使用make来运行测试工具,而对于Windows用户,我们需要Cygwin,所以我将它安装在我的系统中.但我无法运行make命令来测试单元测试用例.
任何人都可以通过在上面提供指导来帮助我解决这个问题.
文件夹结构细节:

我正试图在PyCharm中使用Karma测试运行器.我运行了karma init脚本,并选择从这个init脚本中包含Require.js插件.然后,当我尝试运行测试运行器时,我得到了这样的通知:Uncaught Error: Module name "assert" has not been loaded yet for context: _. Use require([])
所以我不得不使用"npm install assert"下载assert,然后在我的karma.conf.js文件中包含这样的一行:{pattern: 'node_modules/assert/assert.js', included: true},在files数组中.
但现在我得到了类似的抱怨:Uncaught Error: Module name "util/" has not been loaded yet for context: _. Use require([])虽然我使用'npm install util'安装,现在文件夹显示在我的node_modules文件夹下,但我所做的一切似乎都没有解决问题.
任何建议将不胜感激.
正如标题所示,我希望在场景大纲之前运行某些配置/环境设置步骤.我知道有Background这样做的场景,但Behave将场景大纲分成多个场景,从而为场景大纲中的每个输入运行背景.
这不是我想要的.由于某些原因,我无法提供我正在使用的代码,但是我将编写一个示例功能文件.
Background: Power up module and connect
Given the module is powered up
And I have a valid USB connection
Scenario Outline: Example
When I read the arduino
Then I get some <'output'>
Example: Outputs
| 'output' |
| Hi |
| No |
| Yes |
Run Code Online (Sandbox Code Playgroud)
什么会发生在这种情况下是会舞动动力循环和检查每个输出USB接口Hi,No,Yes导致三个电源周期和三个连接检查
我想要的是使用一次电源循环并检查连接一次,然后运行所有三个测试.
我该怎么做呢?
我有一个静态站点,使用编译Sass node-sass.
目前我正在使用Grunt来观看文件,但我觉得它太过分了,因为我可以使用它们的内置CLI.
所以我在package.json中添加:
// package.json
...
"scripts": {
"sass": "node-sass -w input/dir -o output-dir/"
}
Run Code Online (Sandbox Code Playgroud)
问题是,我需要require一个Sass框架模块(全局安装)--include-path.我可以在Gruntfile中执行此操作:
// Gruntfile.js
sass: {
options: {
includePaths: require("the-framework").includePaths()
},
...
},
Run Code Online (Sandbox Code Playgroud)
所以我想到的第一件事是插入字符串,如:
// package.json
...
"scripts": {
"sass": "node-sass -w input/dir -o output-dir/ --include-path " + require("the-framework").includePaths()
}
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,它不起作用.然后脚本运行,但插值变量被忽略.
任何解决方案或替代?如果可能的话,我宁愿不创建额外的文件来存储变量.
谢谢
每当我在Chrome上启动Karma时,都会弹出一个新的Chrome窗口.当我在这个Chrome窗口上调出控制台时,控制台会出现在右侧.我更喜欢连接到底部的控制台,所以我总是把它搞定 - 这有点烦人.
如何让Karma启动Chrome,控制台停靠在底部?
javascript google-chrome google-chrome-devtools karma-runner karma-jasmine
javascript ×5
node.js ×4
karma-runner ×3
requirejs ×2
angularjs ×1
asynchronous ×1
bdd ×1
build ×1
commonjs ×1
gruntjs ×1
jasmine ×1
json ×1
mocha.js ×1
pycharm ×1
python ×1
require ×1
scenarios ×1
typescript ×1
unit-testing ×1
webpack ×1