使用 jasmine-ajax 模拟 XMLHttpRequest 给出 jasmine.ajax = undefined
Mock XMLHttpRequest using jasmine-ajax gives jasmine.ajax = undefined
我正在尝试使用 jasmine-ajax 在单元测试中模拟 XMLHttpRequest。我使用 Aurelia CLI 来生成我的应用程序,我使用 Karma 作为单元测试运行器。
对于单元测试,我尝试导入 jasmine-ajax:
import * as jasmine from 'jasmine-ajax';
describe('when calling the API', () => {
beforeEach(() => {
jasmine.Ajax.install();
});
afterEach(() => {
jasmine.Ajax.uninstall();
});
it('then it should get an answer back', () => {
var doneFn = jasmine.createSpy("success");
var xhr= new XMLHttpRequest();
xhr.onreadystatechange = function(args) {
if(this.readyState == this.DONE) {
doneFn(this.responseText);
}
};
xhr.open("GET", "https://someaddress.net/api/plans");
xhr.send();
expect(jasmine.Ajax.requests.mostRecent().url).toBe("https://someaddress.net/api/plans");
expect(doneFn).not.toHaveBeenCalled();
jasmine.Ajax.requests.mostRecent().respondWith({
"status":200,
"contentType": 'text/plain',
"responseText": 'awesome response'
});
expect(doneFn).toHaveBeenCalledWith('awesome response');
});
});
当 运行 使用 Karma 进行测试时,我得到:
TypeError: jasmine_ajax__WEBPACK_IMPORTED_MODULE_0__.jasmine is
undefined in test/karma-bundle.js line 3146 > eval (line 7)
我发现有一个 jasmine-ajax 的类型定义,我已经用
安装了它
npm i @types/jasmine-ajax
然后我删除了 jasmine-ajax.This 的导入语句导致以下错误:
TypeError: jasmine.Ajax is undefined in test/karma-bundle.js line 3134 > eval (line 3)
那我做错了什么?
我正在使用 jasmine 3.3.9、jasmine-ajax 3.4.0、karma 4.0.1、typescript 2.9.2 和 webpack 4.4.25,
安装 karma-jasmine-ajax (https://github.com/IDCubed/karma-jasmine-ajax) 并将 'jasmine-ajax' 添加到 karma.conf.js 中的框架数组后,它开始工作了。
module.exports = function(config) {
config.set({
frameworks: ['jasmine-ajax', 'jasmine']
});
}
我正在尝试使用 jasmine-ajax 在单元测试中模拟 XMLHttpRequest。我使用 Aurelia CLI 来生成我的应用程序,我使用 Karma 作为单元测试运行器。
对于单元测试,我尝试导入 jasmine-ajax:
import * as jasmine from 'jasmine-ajax';
describe('when calling the API', () => {
beforeEach(() => {
jasmine.Ajax.install();
});
afterEach(() => {
jasmine.Ajax.uninstall();
});
it('then it should get an answer back', () => {
var doneFn = jasmine.createSpy("success");
var xhr= new XMLHttpRequest();
xhr.onreadystatechange = function(args) {
if(this.readyState == this.DONE) {
doneFn(this.responseText);
}
};
xhr.open("GET", "https://someaddress.net/api/plans");
xhr.send();
expect(jasmine.Ajax.requests.mostRecent().url).toBe("https://someaddress.net/api/plans");
expect(doneFn).not.toHaveBeenCalled();
jasmine.Ajax.requests.mostRecent().respondWith({
"status":200,
"contentType": 'text/plain',
"responseText": 'awesome response'
});
expect(doneFn).toHaveBeenCalledWith('awesome response');
});
});
当 运行 使用 Karma 进行测试时,我得到:
TypeError: jasmine_ajax__WEBPACK_IMPORTED_MODULE_0__.jasmine is undefined in test/karma-bundle.js line 3146 > eval (line 7)
我发现有一个 jasmine-ajax 的类型定义,我已经用
安装了它npm i @types/jasmine-ajax
然后我删除了 jasmine-ajax.This 的导入语句导致以下错误:
TypeError: jasmine.Ajax is undefined in test/karma-bundle.js line 3134 > eval (line 3)
那我做错了什么?
我正在使用 jasmine 3.3.9、jasmine-ajax 3.4.0、karma 4.0.1、typescript 2.9.2 和 webpack 4.4.25,
安装 karma-jasmine-ajax (https://github.com/IDCubed/karma-jasmine-ajax) 并将 'jasmine-ajax' 添加到 karma.conf.js 中的框架数组后,它开始工作了。
module.exports = function(config) {
config.set({
frameworks: ['jasmine-ajax', 'jasmine']
});
}