我正在尝试用Jasmine和RequireJS做一些测试。一切都进行得很好,直到我注意到我所描述的函数的上下文出现了问题。
// auth.js
define(['service/auth'], function(auth) {
describe('Tests "auth" service', function() {
var data;
var OPTIONS = {
CN: '147144147',
GV: '147153162'
};
auth.on.success.addOnce(function(response) {
data = response;
});
auth.request(OPTIONS);
it('"status" should exist and be "true"', function() {
waitsFor(function() {
return data !== undefined;
});
runs(function() {
expect(data['status']).toBeDefined();
expect(data['status']).toBeTruthy();
});
});
});
});
// login.js
define(['service/login'], function(login) {
describe('Tests "login" service', function() {
var data;
var OPTIONS = {
oper: 1,
codigoouemail: '101',
senha: '10151015'
};
login.on.success.addOnce(function( response ) {
data = response;
});
login.request(OPTIONS);
it('Should get the service response for user "' + OPTIONS.codigoouemail + '"', function() {
waitsFor(function() {
return data !== undefined;
});
runs(function() {
expect(data).toBeDefined();
});
});
});
});
有人知道怎么解决这个吗?
下面是一个异步测试示例,用于检查是否创建了vos
:
it('should return a list of item VOs', function() {
var dfd = $q.defer();
var items = mock.content.items[1].items;
runs(function() {
dfd.promise.then(function(VOs) {
expect(VOs.length).toBe(items.length);
expect(A.equals(itemVO(items[0]), VOs[0])).toBe(true);
}, this.fail);
});
waits(50);
runs(function() {
itemsVO(dfd, items);
$rootScope.$digest();
});
});
所以首先我运行一个函数来监听我的异步功能何时完成,我等待50ms来检查应用程序是否准备好,然后我运行我的异步功能。请注意expect
在回调中的情况。
全部: 我对Jasmine测试非常陌生,我想知道的一个关于异步测试的问题是: 有谁能简单解释一下Jasmine是如何知道里面有一个done()函数调用并等待它完成的? 例如,如果我把一些异步调用在之前: Jasmine怎么知道它应该让规范测试等待? 谢谢
我试图为我编写的一些代码编写单元测试,遇到的问题是我希望在执行函数后调用模拟回调,但我的测试失败,因为它从未被调用。 正在测试的功能非常简单: 我怀疑的问题是,由于请求的异步性质,jasmine在API调用中执行模拟回调之前测试期望值。我尝试过使用其他人建议使用的done()和flags,但没有成功。希望能在这方面提供一些指导。
我知道在摘要周期中手动调用或会导致$digest已经在进行中错误,但我不知道为什么我在这里得到它。 这是一个包装的服务的单元测试,该服务足够简单,它只是防止对服务器进行重复调用,同时确保试图进行调用的代码仍然获得预期的数据。 单元测试也非常简单,它使用来预期请求。 当调用时出现“$digest ready in progress”错误,这将导致失败。我不知道为什么。我可以通过在这样的超时中包装来解
jasmine:在jasmine指定的超时内没有调用异步回调。DEFAULT_TIMEOUT_INTERVAL 测试window.post消息指令 用Jasmine async测试postMessage不起作用 我有下面的代码,我正在接收下面的输出。 在jasmine.DEFAULT\u timeout\u INTERVAL指定的超时内未调用异步回调 myService在父描述函数中定义。正如我所
我为javascript编写了Jasmine测试。我正在尝试使用Phantomjs运行Jasmine测试。我从Phantomjs.org下载了Phantomjs并尝试使用phantomjs.exe//phantom jasmine路径运行它http://localhost/myJasmineTestRunner.html.Google帮不了我。有人能建议我如何使用phantomjs测试jasmin
我想知道哪种方法是测试不返回任何函数(只更改一个字段值)并包含异步调用的最佳方法。 这是我要测试的AngularJS控制器,我调用的服务返回一个promise(总是返回{name:"John"}): 如果sayHello函数不包含异步调用,这将是规范,但它总是失败,因为scope.greeting总是空的。 我将如何使用此规范来处理异步调用?我真的不明白如何以及在哪里使用Jasmine 2.0的“