我在测试期间遇到了导入问题。测试框架是Mocha,我正在使用chai和sinon。我认为这是我对Javascript中范围如何工作的理解的一个问题。尽管如此。
这是我的测试文件: 测试/动作/忘记密码
const middlewares = [ thunk];
const mockStore = configureMockStore(middlewares);
describe('forgot password async actions', () => {
afterEach(()=> {
nock.cleanAll();
});
it('should show a request for a password reset and that it succeeded ', (done) => {
nock('http://localhost:8080/')
.post('/password-reset-requests')
.reply(200);
var email = "test@email.com";
const expectedActions= [
{type: REQUEST_ADD_PASSWORD_RESET_REQUEST},
{type: REQUEST_ADD_PASSWORD_RESET_REQUEST_SUCCESS}
];
const store = mockStore({}, expectedActions, done);
store.dispatch(Actions.addPasswordResetRequest(email));
});
});
这是我的行动所做的api调用
API / users.js
'use strict';
export const addPasswordResetRequest = (email) => {
console.log(NC_SETTINGS.API_ROOT);
return fetch(
NC_SETTINGS.API_ROOT + '/password-reset-requests',
{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: email,
code: NC_SETTINGS.GROUP.code
})
}
)
.then(handleResponse);
};
因此,当我正常运行它时,在浏览器中,我没有错误。 Fetch被调用得很好,文件知道NC_SETTINGS文件的位置。
我应该提一下我项目的文件结构。
-project
--app folder
---js folder
----api folder
-----users.js(this makes the call to fetch)
--settings folder
---settings.js file(this has nc_settings)
--test folder
---testing file
在local_web上输入它们就好了。
但是当我测试时,找不到fetch和nc_settings。
为了解决fetch问题,我在api / users.js中导入了同构提取,修复了测试期间的提取问题。然后我尝试导入app / settings / settings,它确实找到了该文件。但是它仍然没有解决问题。它现在出现了未定义。
这背后的原因是什么?这是一个提升范围问题吗?这是如何解决的?