У меня много проблем с получением простого теста для теста. Шутка настаивает на том, что мой Ajax вызов не происходит, с сообщением об ошибке:JestJs думает, что ajax не называется
FAIL authTest.js (1.828s)
● Authentication: Logging In › it Doesn't currently have a logged in user
- Expected Function to be called with { url : 'api/loggedin', type : 'GET', error : <jasmine.any(function Function() { [native code] })>, success : <jasmine.any(function Function() { [native code] })> }.
at Spec.<anonymous> (/Users/ritmatter/reps/spec/authTest.js:13:20)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
Код испытываемое в файле auth.jsx, и это выглядит следующим образом:
loggedIn: function() {
return $.ajax({
url: 'api/loggedin',
type: 'GET',
error: function(xhr, status, err) {
return false;
}.bind(this),
success: function(data) {
return true;
}.bind(this),
});
},
Тест выглядит так:
/** @jsx React.DOM */
"use strict";
var React = require('react/addons');
var TestUtils = React.addons.TestUtils;
describe('Authentication: Logging In', function() {
it('Doesn\'t currently have a logged in user', function() {
var $ = require('jquery');
jest.dontMock('../js/auth.jsx');
var auth = require('../js/auth.jsx');
auth.loggedIn();
expect($.ajax).toBeCalledWith({
url: 'api/loggedin',
type: 'GET',
error: jasmine.any(Function),
success: jasmine.any(Function)
});
});
});
Любая идея, почему шутка будет думать, что это не называется? Я смотрю вокруг, и кажется, что есть некоторые ошибки в отношении dontMock() и mock().
Вы не можете вызвать методы взаимодействия компонентов вне реагирующего компонента, если они не находятся в объекте 'statics: {}'. Однако статические методы не получают доступа к экземпляру компонента. –
Auth - простой объект javascript, а не реагирующий компонент, поэтому я не думаю, что это должно быть проблемой. В этом файле подробно описывается учебник: http://facebook.github.io/jest/docs/tutorial.html#content, за исключением того, что auth - это .jsx-файл, а не файл .js. – ritmatter
Да, это файл .jsx запутан, потому что почему бы не реагировать на метод класса компонента в .jsx вместо .js? –