何が起こると思いましたか? sinon.fakeServer.requestsの数が1以上だったと思います
実際に起こることsinon.fakeServer.requestsは常にnullです
再現する方法
describe('--Pictures Selector--', () => {
let server, store, wrap;
beforeEach(() => {
server = sinon.fakeServer.create();
server.respondWith("GET", /\/api\/users/, [
200, {"Content-Type":"application/json"}, JSON.stringify(mock_pictures_list_store)
]);
store = new Pictures_List_Store([]);
wrap = mount(
<Selectable_Picture_List store={store} />
);
axios.get('http://localhost:9157/api/users/5/images/30/0');
console.log("%c server.requests", "color: #C78B41", server.requests);
});
afterEach(() => {
server.restore();
});
it('render drop zone', () => {
server.respond();
console.log("%c server.requests", "color: #C78B41", server.requests);
expect(wrap.find('Dropzone')).to.have.length(1);
});
});
テストコードで
axios.get
リクエストを直接呼び出します。また、react.jsコンポーネントのcomponentWillMount
メソッドでも呼び出されます。
axios.get()
は非同期です。 これは、 console.log
行が実行されたとき、 xmlhttprequest
がまだ作成されていないことを意味します。
答えてくれてありがとう。 しかし、 server.autoRespond = true;
またはserver.respondImmediately = true;
またはserver.respond();
を使用する場合、server.requestsはまだ空です。 それらがうまくいかないのは正しいですか?
fakeServerでHTMLテストを開始する方法はありますか?
fakeServerでHTMLテストを開始する方法はありますか?
はい、あります。
上記のbeforeEach
リクエストを確認するための解決策は、次の2つです。
beforeEach
関数にコールバックを渡しますconsole.log
を実行するために少し待ちます変更は次のようになります。
beforeEach(done => {
// ...
axios.get(...);
setTimeout(() => {
console.log("%c server.requests", "color: #C78B41", server.requests);
done();
});
});
わお。 それはうまくいきます! ありがとう。 最後に、必要なテストを作成する方法を取得しました。
最も参考になるコメント
はい、あります。
上記の
beforeEach
リクエストを確認するための解決策は、次の2つです。beforeEach
関数にコールバックを渡しますconsole.log
を実行するために少し待ちます変更は次のようになります。