我想用mocha写一个测试用例来测试strapi API's,我试着在文档中搜索,但不明白,我只想知道我们到底如何写一个单元测试用例来测试任何API。之前我使用了下面的方法,但是在使用**nyc Istanbul包进行代码覆盖后,它显示出0%的行数和许多分支。
const request = require("co-supertest");
var assert = require("chai").assert;
const { SERVER_URL, PAYLOAD } = require("../config/config");
let JWT;
let dataId;
describe("States Module Endpoint", function () {
before(function (done) {
request(SERVER_URL)
.post("/auth/local")
.send(PAYLOAD)
.expect(200)
.expect("Content-Type", /json/)
.end(function (err, res) {
if (err) return done(err);
const response = res.body;
JWT = response["jwt"];
done();
});
});
describe("Create Method", function () {
// case for empty,required and correct params for Create method done here
describe("POST /crm-plugin/states/", function () {
it("should not create an entry when empty params test case is executed", function (done) {
request(SERVER_URL)
.post("/crm-plugin/states")
.send({})
.set("Authorization", "Bearer " + JWT)
.expect(200)
.end(function (err, res) {
if (err) return done(err);
assert.isEmpty(
res.body,
"Empty response is expected when params are empty"
);
done();
});
});
it("should not create an entry when required params test case is executed", function (done) {
request(SERVER_URL)
.post("/crm-plugin/states")
.send({
is_active: true,
})
.set("Authorization", "Bearer " + JWT)
.expect(200)
.end(function (err, res) {
if (err) return done(err);
assert.isEmpty(
res.body,
"Empty response is expected when required params are missing"
);
done();
});
});
it("should create an entry when correct params test case is executed", function (done) {
request(SERVER_URL)
.post("/crm-plugin/states")
.send({
name: "Gujarat",
})
.set("Authorization", "Bearer " + JWT)
.expect(200)
.end(function (err, res) {
dataId = res.body.id;
if (err) return done(err);
assert.strictEqual(
res.body.name,
"Gujarat",
"Object in response should not differ"
);
dataId = res.body.id;
done();
});
});
});
});
describe("Update Method", function () {
// case for correct params done for update method
describe("PUT /crm-plugin/states/:id", function () {
it("should update the data when correct params test case is executed", function (done) {
request(SERVER_URL)
.put("/crm-plugin/states/" + dataId)
.send({
name: "Goa",
})
.set("Authorization", "Bearer " + JWT)
.expect(200)
.end(function (err, res) {
if (err) return done(err);
assert.strictEqual(
res.body.name,
"Goa",
"Object in response should not differ"
);
done();
});
});
});
});
describe("Find Method", function () {
// case for empty params done here
describe("GET /crm-plugin/states", function () {
it("responds with all records when empty params test case is executed", function (done) {
request(SERVER_URL)
.get("/crm-plugin/states")
.set("Authorization", "Bearer " + JWT)
.expect(200)
.end(function (err, res) {
if (err) return done(err);
assert.isAtLeast(
res.body.length,
1,
"Find method should return atleast one response."
);
done();
});
});
});
});
describe("FindOne Method", function () {
// case for correct params done here
describe("GET /crm-plugin/states/:id", function () {
it("responds with matching records when correct params test case is executed", function (done) {
request(SERVER_URL)
.get("/crm-plugin/states/" + dataId)
.set("Authorization", "Bearer " + JWT)
.expect(200)
.end(function (err, res) {
if (err) return done(err);
assert.strictEqual(
res.body.name,
"Goa",
"FindOne Method should return response with same name"
);
done();
});
});
});
});
describe("Count Method", function () {
// case for count done here
describe("GET /crm-plugin/states/count", function () {
it("should return data count when correct params test case is executed", function (done) {
request(SERVER_URL)
.get("/crm-plugin/states/count")
.set("Authorization", "Bearer " + JWT)
.expect(200)
.end(function (err, res) {
if (err) return done(err);
assert.isAtLeast(res.body, 1, "Count expected to be atleast 1");
done();
});
});
});
});
describe("Delete Method", function () {
// case for correct params done here
describe("DELETE /crm-plugin/states/:id", function () {
it("should delete entry when correct params test case is executed", function (done) {
request(SERVER_URL)
.delete("/crm-plugin/states/" + dataId)
.set("Authorization", "Bearer " + JWT)
.expect(200)
.end(function (err, res) {
if (err) return done(err);
assert.strictEqual(
res.body.name,
"Goa",
"Object in response should not differ"
);
done();
});
});
});
});
});
我想这个指南会对你有所帮助----------。https:/github.comstrapistrapipull6324
这就是你如何为你的Strapi应用创建一个测试套件。